java - 调用 hibernate query list() 方法会产生错误

标签 java hibernate

我正在尝试调试某人的代码。但我不是 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,但仍然出现相同的错误。

缓存与此有什么关系吗? 或者,这里似乎有什么问题?我已经一无所知了。

提前感谢您的回答...

最佳答案

尝试使用以下代码;

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 的值,这可能是问题所在。

关于java - 调用 hibernate query list() 方法会产生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5512138/

相关文章:

java - hibernate hql - 执行更新查询后返回更新的行ID列表

java - 在 Spring Boot 上使用正确的方言 PostgreSQL

java - Hibernate validator ClassNotFoundException

hibernate - JBoss AS 7.x -JPA 网络故障后如何重新建立连接

java - 如何在 Spring 和 Hibernate 中使用两个数据库/数据源

java - String.toLowerCase 中的 StackOverflowError

java - 使用 JDBC 迭代大表的最快方法

java - 如果两条线使用叉积相交

Java wait() 不会被 notify() 唤醒

java - 计算特定时区中两个 ZonedDateTime 对象之间的天数?