我正在尝试调试某人的代码。但我不是hibernate的专家,所以我就此问你的帮助。
我正在尝试从数据库中检索作业列表,但似乎存在问题。
在实体类中:
//JobEntity
@ManyToOne(cascade={CascadeType.MERGE, CascadeType.REFRESH}, fetch=FetchType.EAGER)
@JoinColumn(name="job_id", nullable=false)
private Job jobId;
@Column(name="grp_id")
private String grpId;
@Id
@Column(name="id", nullable=false)
@GenericValue(strategy=GenerationType.SEQUENCE,generator="JOB_ENTITY_SEQUENCE")
private Integer id;
//DaoImpl
public Collection<JobEntity> getJobsByGrpId(String grpId){
Query q = getCurrentSession().createQuery("from JobEntity je where je.grpId= :grpId order by je.id");
q.setString("grpId", grpId);
return q.list();
}
我得到的错误是这样的:
No row with the given identifier exists: [Job#:jb4567]...
但是在数据库中,该表有数据。
我不确定这是什么原因。
我在创建查询之前尝试了一个getCurrentSession.flush()语句,我也尝试将作业ID的级联类型从REFRESH更改为PERSIST,但仍然会出现相同的错误。
缓存是否与此有关? 或者,这里似乎有什么问题?我已经无能为力了。
提前感谢您的答案...
答案 0 :(得分:0)
尝试使用以下代码;
public Collection<JobEntity> getJobsByGrpId(String grpId){
Query q = getCurrentSession().createQuery("from JobEntity je where je.grpId= :grpId order by je.id");
q.setString("grpId", grpId);
return q.list();
}
您没有设置位置参数grpId的值,这可能是问题所在。