休眠为相同的外键返回相同的实例

hibernate returning same instance for same foreign keys

我有两个 tables -

PersonType                    Person
----------------------      ------------------
ID  type    pid             pid name 
1   Teacher 1               1   Smith
2   Driver  1               2   David
3   Waiter  2

pid 是Person 的外键。在休眠状态下,将这两个 table 映射为多对一。

对于java 类 -

PersonType 
{
 String id;
 String type;
 Person p;
}


Person
{
 String pid;
 String name;
}

从 java 代码中,检索到所有 PersonTypes。检索后,通过调用personType.p.pid= 2将“Driver”更改为Smith。 但是,PersonType ID 12 都更新了。因为 PersonType ID 12pid 1,休眠 return 相同的实例和 对其中之一的任何更改都会反映在两者上。请任何人都可以建议如何克服这个问题。谢谢。

我认为你建模的方式不应该这样做:

personType.p.pid=2

当您更改休眠管理模型上的参考数据时,我想您会想要这样做:

personType.p=smith

其中 smith 是对 ID 为 1

Person 对象的引用

personType.p.pid= 2 此代码不会将 Driver 更改为 Smith。它将 Smith 的 id 从 1 更改为 2。您需要做的是 @Alex 建议的。