很有可能是因为B对象没有引用相同的Java C对象实例。它们引用数据库中的同一行(即相同的主键),但是它们是数据库的不同副本。
因此,正在发生的事情是,管理实体的Hibernate会话将跟踪哪个Java对象对应于具有相同主键的行。
一种选择是确保引用同一行的对象B的实体实际上引用的是C的同一对象实例。或者,为该成员变量关闭级联。这样,当B持久时,C则不会。不过,您将不得不分别手动保存C。如果C是类型/类别表,那么这样做可能是有道理的。

很有可能是因为B对象没有引用相同的Java C对象实例。它们引用数据库中的同一行(即相同的主键),但是它们是数据库的不同副本。
因此,正在发生的事情是,管理实体的Hibernate会话将跟踪哪个Java对象对应于具有相同主键的行。
一种选择是确保引用同一行的对象B的实体实际上引用的是C的同一对象实例。或者,为该成员变量关闭级联。这样,当B持久时,C则不会。不过,您将不得不分别手动保存C。如果C是类型/类别表,那么这样做可能是有道理的。