Hibernate中session.get(Class,Serializable标识符)中的标识符

时间:2012-08-09 10:09:37

标签: hibernate

  

可能重复:
  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?)我不明白它的本质。

1 个答案:

答案 0 :(得分:3)

  

这里的标识符是什么意思

实体的标识符是使用@Id@EmbeddedId注释的属性。

如果您的班级使用long代理人标识符,您将使用会话,如下所示:

session.get(MyClass.class, 1);

如果您的类使用嵌入式ID,则会将该@Embeddable类的实例传递给get方法。

session.get(MyClass.class, new MyClassIdentifier("String", 1));