简体   繁体   中英

Calling hibernate query list() method generates errors

I'm trying to debug someone's codes. But I am not an expert of hibernate so I'm asking your help about this.

I am trying to retrieve a list of jobs from the database, but there seems to be a problem.

In the entity class:

//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();
    }

And the error I get is something like this:

No row with the given identifier exists: [Job#:jb4567]... 

But in the db, the table has data.

I'm not sure what's reason for this.

I tried putting a getCurrentSession.flush() statement before creating the query, and I also tried changing the cascade type of the job id from REFRESH to PERSIST, but still the same errors occur.

Does cache have anything to do with this? Or, what seems to be the problem here? I'm clueless already.

Thanks in advance for the answers...

try with the following code;

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();
    }

you are not setting the value for the positional parameter grpId, which may be the problem.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM