Hibernate用于两个以上实体的复杂查询
我正在尝试使用hibernate查询来搜索和过滤我的实体,但我找不到任何解决方案。我有三个有界实体 集团实体Hibernate用于两个以上实体的复杂查询,hibernate,named-query,Hibernate,Named Query,我正在尝试使用hibernate查询来搜索和过滤我的实体,但我找不到任何解决方案。我有三个有界实体 集团实体 public class Group { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column private int id; @Column private String name; @EqualsAndHashCode.Exclud
public class Group {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column
private int id;
@Column
private String name;
@EqualsAndHashCode.Exclude
@OneToMany(cascade={CascadeType.PERSIST, CascadeType.DETACH, CascadeType.MERGE, CascadeType.REFRESH})
@JoinTable(
name="students_groups",
joinColumns=@JoinColumn(name="group_id"),
inverseJoinColumns=@JoinColumn(name="student_id")
)
@LazyCollection(LazyCollectionOption.FALSE)
private List<Student> students;
}
我需要按group.id和course.id查找group我尝试这样进行查询
Query<Group> query = session.createQuery("from Group as g join g.students as s join s.courses as c where c.id like :courseId and g.id like :groupId", Group.class);
Query Query=session.createQuery(“从组作为g加入g.students作为s加入s.courses作为c,其中c.id like:courseId和g.id like:groupId”,Group.class);
但它不起作用:(我将非常感谢您帮助我解决这个问题,并为我的英语不好感到抱歉:)尝试用以下方式更正您的查询:
Query Query=session.createQuery(“从g组中选择g,加入g.students,加入s.courses,其中c.id=:courseId和g.id=:groupId”,Group.class”);
请注意:
字符串\u表达式一起使用
TRUE
和FALSE
值,因为您应该使用@ElementCollection
、@OneToMany
或@ManyToMany
集合的JPAFetchType
属性
public class Course {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column
private int id;
@Column
private String name;
@Column
private String description;
}
Query<Group> query = session.createQuery("from Group as g join g.students as s join s.courses as c where c.id like :courseId and g.id like :groupId", Group.class);