【问题标题】:Identifier in session.get(Class, Serializable identifier) in Hibernate [duplicate]Hibernate 中 session.get(Class,Serializable identifier) 中的标识符 [重复]
【发布时间】:2012-08-06 12:58:05
【问题描述】:

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

【问题讨论】:

    标签: hibernate


    【解决方案1】:

    这里的标识符是什么意思

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

    如果您的班级使用long 代理标识符,您将按如下方式使用会话:

    session.get(MyClass.class, 1);
    

    如果您的类使用嵌入的 id,您可以将 @Embeddable 类的实例传递给 get 方法。

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

    【讨论】:

    • 如果日期是 ID。那你怎么指定标识符。
    • 将其注释为@Id - 顺便说一句,这并没有停止成为您问题的正确答案。
    • 不,我的意思是 - 那么 session.get(MyClass.class,?); 中的参数应该是什么?如果 Date 是 ID。
    • session.get(MyClass.class, myDate);
    猜你喜欢
    • 2011-11-20
    • 1970-01-01
    • 2014-10-29
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多