Hibernate - 插入破坏唯一约束

时间:2016-03-02 23:08:35

标签: java hibernate insert unique-constraint

我有三个表格,如下所示,有多对一的映射(来自Jdbc table design which is better的帮助)

电子邮件,通知和Email_notifications enter image description here

以下是保存代码

    EmailData e1 = new EmailData();
    e1.setEmail(email);

    NotificationData n1 = new NotificationData();
    n1.setMessage(message);

    EmailNotificationData en1 = new EmailNotificationData("N");
    en1.setEmail(e1);
    en1.setNotification(n1);
    session.save(en1);

所以当我添加dulplicate email时,它假设更新email_notifications表中的通知 - >同一封电子邮件的新通知,但由于唯一约束违规而导致插入错误

我尝试了“saveorupdate”,它也没有用到

有关如何解决此问题的任何建议

1 个答案:

答案 0 :(得分:0)

重复的EmailNotificationData对象的id必须与之前的重复EmailNotificationData obj相同。否则hibernate不会知道重复的对象是否已经持久化。如果为EmailNotificationData obj设置了id,hibernate将知道obj已经持久化,而hibernate将在obj上执行并更新。如果id不存在,hibernate将尝试保存,并且db中设置的任何唯一约束都将导致约束违规异常。