一对多类中,根据多的的一方的某个属性获得一的一方的list

Posted 发福大叔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一对多类中,根据多的的一方的某个属性获得一的一方的list相关的知识,希望对你有一定的参考价值。

一的一方:AppVsStaff.java

AppVsStaff中包含两个多的一方,Applications.java和StaffDict.java

import org.hibernate.annotations.NotFound;
import org.hibernate.annotations.NotFoundAction;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

@Entity
@Table(name = "APP_VS_STAFF")
public class AppVsStaff {
  @Id
  @Column(name="APP_VS_EMP_ID")
  @NotNull(message = "应用程序人员关系ID不能为空")
  @Size(min = 1,max = 20,message = "应用程序人员关系ID不能超过20字且不能为空")
  private String  AppVsEmpId;

  @JoinColumn(name = "APP_ID")
  @ManyToOne
  @NotFound(action = NotFoundAction.IGNORE)
  private Applications applications;

  @JoinColumn(name = "EMP_ID")
  @ManyToOne
  @NotFound(action = NotFoundAction.IGNORE)
  private StaffDict staffDict;

  @Column(name="CAPABILITY")
  private String capability;
}

问题:要根据StaffDict中的某个属性查出Applications对应的list

解决如下:

List<Applications> appList = new ArrayList<>();
String jpql = "SELECT app FROM AppVsStaff appVsStaff LEFT JOIN appVsStaff.applications app WHERE appVsStaff.staffDict.userName=:userName";
appList = entityManager.createQuery(jpql).setParameter("userName", userName).getResultList();

 

以上是关于一对多类中,根据多的的一方的某个属性获得一的一方的list的主要内容,如果未能解决你的问题,请参考以下文章

hibernate的一对多和多对一关联

hibernate系列之四

hibernate 关联关系(多对多对多一对一)的配置

2018.11.4 Hibernate中多对多的关系

关联查询

hibernate配置双向一对多的时候,困惑了