使用Hibernate插入前检查重复值

时间:2014-06-02 09:05:22

标签: java spring hibernate unique-key

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

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

如果有其他方式,请告诉我。

3 个答案:

答案 0 :(得分:0)

  

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

您不需要从数据库中获取所有部门。应该足以在数据库中搜索要插入名称的部门。因为名称应该有一个唯一的密钥,所以它应该足够快。

答案 1 :(得分:0)

如果您的@Id属性是部门名称,那么Hibernate的saveOrUpdate API将检查具有该ID的对象是否已存在于数据库中。如果是这样它将更新,否则它将创建一个新条目。希望这对你有帮助。请参阅此link

答案 2 :(得分:0)

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

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

如果收到的对象为null,则可以添加新对象。 同样为了性能,最好使用带有“count”谓词的查询,以避免整个对象加载。