做项目中间遇到一个很诡异的问题:
有两个表:A和AHistory(A表记录删除后存入此表,A的历史表),当我复制一条记录到AHistory表时,此时A表和AHistory表两条记录id相同,后续通过修改操作将两表任意一条记录更新为不同的信息,但ID仍然相同;此时,如果用hibernate映射到实体类中时,想象中的应该是两个不同的实体类,拥有不同的属性等。
然而,当我在程序中查询这两条ID相同的记录后,所得到两个的hibernate映射实体类却完全相同。
通过此问题,才知道hibernate会将查询的两条ID相同的记录当做一个对象处理,因此导致获取到两个完全相同的实体类,由此猜想,hibernate应该是通过主键去存储和获取映射对象的……
以上观点若有不妥之处,敬请不吝赐教……
时间: 2024-10-07 05:28:39