繁体   English   中英

如何从中间表中选择hibernate.query

[英]How can I select with hibernate.query from an intermediate table

我有三个表JobJobSeekerJob_applications这是中间表。 JobJobSeeker之间的关系为n到n。 我怎么能写一个Hibernate查询或标准来选择用List(作业) Job.idJob.applicantsCount其计算有多少JobSeeker应用到工作。

Job实体:

    @ManyToMany
    @JoinTable(name="JOB_APPLICATIONS",  
            joinColumns={@JoinColumn(name="id_job", referencedColumnName="id")},  
            inverseJoinColumns={@JoinColumn(name="id_job_seeker", referencedColumnName="id")})
    private List<JobSeeker> jobSeekers = new ArrayList<JobSeeker>();

    @Transient
    @Expose


    private Integer applicantsCount = 0;

    ...

JobSeeker实体:

    @ManyToMany(fetch=FetchType.LAZY)
    @JoinTable(name="JOB_APPLICATIONS",  
        joinColumns={@JoinColumn(name="id_job_seeker", referencedColumnName="id")},  
        inverseJoinColumns={@JoinColumn(name="id_job", referencedColumnName="id")})
    @Fetch(FetchMode.SUBSELECT)
    private List<Job> jobs = new ArrayList<Job>();
    ....

在普通的SQL中,我写这样的东西: select id,(select count(*) from job_applications where id_job = id ) as applicantsCount from job

这可行,但我需要使用List(Job)中的hibernate.Query或hibernate.Criteria。 有人可以帮我用休眠写这个查询吗?

解决方案: manish评论解决了我的问题,请阅读

它不是很清楚。 您应该编写实体,以提供更好的抽象。 为什么在Job类中没有List<JobApplications> ,所以可以获得列表:

Criteria crit = s.createCriteria(Job.class);
List<Job> jobs =crit.getList();
for(Job j:jobs){
    //j.getId returns the Id of the Job.....and... 
    //j.getJobApplications.size() returns count for that particular job
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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