我有三个表格,如下所示,有多对一的映射(来自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”,它也没有用到
有关如何解决此问题的任何建议
答案 0 :(得分:0)
重复的EmailNotificationData对象的id必须与之前的重复EmailNotificationData obj相同。否则hibernate不会知道重复的对象是否已经持久化。如果为EmailNotificationData obj设置了id,hibernate将知道obj已经持久化,而hibernate将在obj上执行并更新。如果id不存在,hibernate将尝试保存,并且db中设置的任何唯一约束都将导致约束违规异常。