可能重复:
Hibernate: different object with the same identifier value was already associated with the session
我是Hibernate的新手,无法从api中理解这一点。 session.get的api说:
Object org.hibernate.Session.get(Class clazz,Serializable id)
返回给定实体类的持久化实例 给定标识符,如果没有这样的持久化实例则为null。 (如果 实例已经与会话关联,返回该实例 实例。此方法永远不会返回未初始化的实例。)
这里的标识符是什么意思。在大多数例子中,他们将它作为1L(可能是因为表中的主键是Long?)我不明白它的本质。
答案 0 :(得分:3)
这里的标识符是什么意思
实体的标识符是使用@Id
或@EmbeddedId
注释的属性。
如果您的班级使用long
代理人标识符,您将使用会话,如下所示:
session.get(MyClass.class, 1);
如果您的类使用嵌入式ID,则会将该@Embeddable
类的实例传递给get方法。
session.get(MyClass.class, new MyClassIdentifier("String", 1));