【问题标题】:Upgrading from JPA hibernate 4-2-* to 4-3-5 exception从 JPA hibernate 4-2-* 升级到 4-3-5 异常
【发布时间】:2014-11-17 17:49:46
【问题描述】:

当我升级到 当我执行以下 JPA 查询时,休眠 4.3.5 出现以下异常:

SELECT A  FROM MAIL_INTERNAL_COPY A WHERE mail.id = 172

数据库中的第 172 条记录。

例外:

javax.ejb.EJBException:javax.persistence.EntityNotFoundException: 找不到 ID 为 172 的 com.wish.diwan.model.client.mail.entity.MailBean

我的实体:

@Entity(name="MAIL_INTERNAL_COPY")
@Table(name="MAIL_INTERNAL_COPY")
public class MailInternalCopyBean 
.

@ManyToOne(fetch=FetchType.EAGER )
@JoinColumn(name="MAIL_ID",referencedColumnName="ID",nullable=false)
private MailBean mail;

它在休眠 4.2.* 上工作,让它在 4.3.5 上工作我必须改变 fetch=FetchType.EAGER 到 fetch=FetchType.Lazy ,但是如果我不想将其更改为 Lazy 怎么办,

是bug还是别的,请指教?

问候 Wish79

【问题讨论】:

    标签: hibernate jpa


    【解决方案1】:

    尝试将其更改为隐式连接:

    SELECT A 
    FROM MAIL_INTERNAL_COPY A 
    JOIN A.mail m
    WHERE m.id = 172
    

    还要确保没有 MailInternalCopyBean DB 条目将 MailBean 设置为 null(因为您使用 nullable=false 标记了此关联)。

    【讨论】:

    • 感谢您的回答,我尝试了同样的问题,如果我将 @ManyToOne(fetch=FetchType.EAGER) 更改为 @ManyToOne(fetch=FetchType.Lazy) 它正在工作,为什么这样正在使用hibernate 4.2而不是4.3,我应该将所有获取类型更改为Lazy还是hibernate 4.3.5有问题
    【解决方案2】:

    我找到了解决方案,当我将休眠模式从 4.3.5 升级到 4.3.7 时,问题就消失了。

    谢谢大家 Wish79

    【讨论】:

      猜你喜欢
      • 2015-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-30
      相关资源
      最近更新 更多