Hibernate中的EntityNotFoundException多数到一个映射但是存在数据

时间:2015-02-26 10:16:57

标签: spring hibernate maven jpa

我受到了以下问题:javax.persistence.EntityNotFoundException:当我通过Employe获得AgenceBnq时,无法找到ID为01的tn.entities.AgenceBnq

员工班级

@Table(name = "EMPLOYE")
@NamedQuery(name = "Employe.findById", query = "SELECT e FROM Employe e where e.employeMat = ?1"),
public class Employe implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@Column(name = "EMPLOYE_MAT", unique = true, nullable = false, length = 15)
private String employeMat;
...
@ManyToOne
@JoinColumn(name = "AGENCE_COD")
private AgenceBnq agenceBnq;
}

@Entity
@Table(name="AGENCEBNQ")

public class AgenceBnq implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@Column(name="AGENCE_COD", unique=true, nullable=false, length=10)
private String agenceCod;

...
//bi-directional many-to-one association to Employe
@OneToMany(mappedBy="agenceBnq")
private Set<Employe> employes;
}

我在DAO中调用namedQuery Employe.findById来检索数据,我必须从Employe获取AgenceBnq,但在调用 query.getResultList()

时会出现此错误

@NotFound(action = NotFoundAction.IGNORE)对我来说没有用,因为AGENCEBNQ表中存在数据,我必须通过Employe重新定义日期 这是hibernate中的一个错误吗?我正在使用hibernate版本3.6.7.Final

1 个答案:

答案 0 :(得分:0)

首先,您不需要查询它,EnityManger.find(Employee.class,YOUR_ID)将完成这项工作。

其次不使用?在您的查询中,但名称(e.employeMat =:id),因为它更容易调试,更少的错误prones复杂的查询。

最后,检查您的数据库表是否Employee表中的AGENCE_COD列确实包含崩溃的权限的有效ID(并且它的长度与AgenceBnq的ID长度匹配)。它应该有效,这就是为什么它不会使你的Employe.AGENCE_COD具有defualt值的典型原因,当creatubg新的EMploye时,你只将它添加到Agence,但你没有在Employ中设置Agence。