Java 在限制中使用集合(集合)休眠条件
我有一个像下面这样的Pojo课程Java 在限制中使用集合(集合)休眠条件,java,hibernate,collections,criteria,hibernate-criteria,Java,Hibernate,Collections,Criteria,Hibernate Criteria,我有一个像下面这样的Pojo课程 public class Book{ @Id @Column(name = "ID", unique = true, nullable = false) @GeneratedValue(strategy = GenerationType.IDENTITY) long id; @Column(name = "NAME", nullable = false) String name; @OneToOne @JoinColumn(
public class Book{
@Id
@Column(name = "ID", unique = true, nullable = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)
long id;
@Column(name = "NAME", nullable = false)
String name;
@OneToOne
@JoinColumn(name = "PERSON_ID", nullable = false)
Person owner;
}
我有一套像一套老板一样的老板。现在我要把所有主人的书都拿来。如何在Hibernate条件中添加此条件。我不想使用HQL。我认为您需要使用限制。在类似情况下:
Criteria criteria = session.createCriteria(Book.class)
.add(Restrictions.in("owner",
new Person[] {person1, person2, person1}));
List<Book> resultList = criteria.list();
此外,我认为可以使用:
Criteria criteria = session.createCriteria(Book.class)
.add(Restrictions.in("owner",
new HashSet<>(Arrays.asList(person1, person2, person1))));
根据标准,您可以使用如下方法:
List<Book> books = session.createCriteria(Book.class)
.createAlias("owner", "o")
.add(Restrictions.in("o", ownersCollection.toArray(new Book[ownersCollection.size()])))
.list();
其中ownersCollection是您的所有者集合,在这段代码中,我使用ownersCollection作为列表,但它也可以完美地用于Set
请注意,为了得到正确的结果,应该在所有者类中正确实现.equals
欲了解更多信息,请查看:
.
.
兄弟,你从我口中说出了这些话,事实上,你说得很好;