Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从JPA hibernate 4-2-*升级到4-3-5异常_Hibernate_Jpa - Fatal编程技术网

从JPA hibernate 4-2-*升级到4-3-5异常

从JPA hibernate 4-2-*升级到4-3-5异常,hibernate,jpa,Hibernate,Jpa,当我升级到时,我有一个与hibernate 4.2*一起工作的应用程序 hibernate 4.3.5在执行以下JPA查询时出现以下异常: SELECT A FROM MAIL_INTERNAL_COPY A WHERE mail.id = 172 数据库中的记录。 例外情况: javax.ejb.EJBException:javax.persistence.EntityNotFoundException: 找不到id为172的com.wish.diwan.model.client.mail

当我升级到时,我有一个与hibernate 4.2*一起工作的应用程序 hibernate 4.3.5在执行以下JPA查询时出现以下异常:

SELECT A  FROM MAIL_INTERNAL_COPY A WHERE mail.id = 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;
它在hibernate 4.2上运行。*要让它在4.3.5上运行,我必须进行更改 fetch=FetchType.eagent to fetch=FetchType.Lazy,但如果我不想将其更改为Lazy,该怎么办

这是一个bug还是其他什么,请给出建议?

问候
Wish79

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

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

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

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

谢谢大家
Wish79

谢谢你的回答,我用同样的问题尝试了它,如果我将@ManyToOne(fetch=FetchType.EAGER)更改为@ManyToOne(fetch=FetchType.Lazy),它正在工作,为什么它在hibernate 4.2上工作而在4.3上不工作,我应该将所有的fetch类型更改为Lazy还是hibernate 4.3.5有什么问题