有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用Hibernate在插入前检查重复值

我正在为我的应用程序使用Spring+Hibernate。我有一些积垢手术。在插入之前,我需要检查数据库中是否已经存在类似的条目,如果是,则不应插入。 例如:如果我试图创建一个部门,在插入行之前,我应该检查同名部门是否已经存在。如果是,则该方法返回错误消息。 现在,我知道可以在列上设置唯一键约束来执行检查。但是,我想知道是否还有其他方法可以做到这一点

我能想到的唯一方法是首先从数据库中获取所有部门,并检查每个对象

如果还有别的办法,请告诉我


共 (3) 个答案

  1. # 1 楼答案

    The only way I can think of is first fetching all the departments from the database and check against each object.

    您不需要从数据库中获取所有部门。在数据库中搜索要插入名称的部门就足够了。由于名称无论如何都应该有一个唯一的键,所以它应该足够快

  2. # 2 楼答案

    如果@Id属性是department name,那么Hibernate的saveOrUpdateAPI将检查数据库中是否已经存在具有该id的对象。如果是,它将更新,否则它将创建一个新条目。希望这对你有帮助。看这个link

  3. # 3 楼答案

    您可以尝试通过“获取”方法从数据库中查找对象:

    Cat cat = (Cat) sess.get(Cat.class, id);
    

    如果接收的对象为空,则可以添加新对象。 此外,为了提高性能,请使用带有“count”谓词的查询,以避免整个对象加载