我面临一个非常基本的问题(据称......)。这是我所指的结构:
我在客户端使用flex,Java&在服务器端打开JPA和Microsoft SQL Server服务器持久层。
在我的应用程序中(在客户端),可以决定客户端是否
假设我有'Joe'作为建议客户,现在我将Joe转换为'not recommended'(这是通过简单地取消检查nox来从客户端完成的。)
在后端,我正在删除Joe的当前实体(作为建议客户端),将其id设置为null并再次创建为“not recommended client”。这样的事情:
getAdviseeDao().delete(currentPersistedAdvisee);
currentAdvisee.setId(null);
getAdviseeDao().create(currentAdvisee);
我一直在
com.microsoft.sqlserver.jdbc.SQLServerException: The INSERT statement conflicted with the FOREIGN KEY constraint "FK_advised_to_clients". The conflict occurred in database "blablabla", table "dbo.participants", column 'id'.
为什么会出现这种情况的任何想法?
答案 0 :(得分:0)
getAdviseeDao().delete(currentPersistedAdvisee);
currentAdvisee.setId(null);
getAdviseeDao().create(currentAdvisee);
JPA就是这样。 不要将ID设置为null,也不要尝试将实体重新保存为其他内容。你会得到奇怪和意想不到的行为。
我认为你应该选择聚合而不是继承。我想我会将建议部分封装在一个Embeddable类中。