java - Hibernate 从多对一关系中获取剩余对象

标签 java hibernate criteria

我有一个存储俱乐部和球队的数据库。 一个俱乐部拥有多支球队,一支球队只属于一个俱乐部。 是否可以使用查询不属于特定俱乐部的所有球队 hibernate 标准API? 这是(剥离的)Club.java 和 Team.java

Club.java

@Entity
@Table(name = "clubs")
public class Club {
    @Id
    @GeneratedValue
    @Column(name = "club_id")
    private int id;
    @Column(name = "name")
    private String name;
    @OneToMany(mappedBy = "club")
    private java.util.Set<Team> teams;

    [setters, constructors etc]
}

Team.java

@Entity
@Table(name = "team")
public class Team {
    @Id
    @GeneratedValue
    @Column(name = "team_id")
    private int id;
    @Column(name = "name")
    private String name;
    @ManyToOne
    @JoinColumn(name = "club_id")
    private Club club;

    [same here]   
}

最佳答案

作为上述答案的一个细微变化,如果您已经有了 Club 对象,并且希望找到不属于该对象的所有球队,那么您应该能够执行以下操作:

Criteria criteria = session.createCriteria(Team.class);
criteria.add(Restrictions.ne("club", myClub));
List<Team> teams = criteria.list();

这避免了查询俱乐部名称,恕我直言,这是更干净的代码。

关于java - Hibernate 从多对一关系中获取剩余对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32105059/

相关文章:

c# - NHibernate Criteria 列表属性的任何元素为真

Hibernate 通过将值与 2 个串联字段匹配来获取记录

Java,Hibernate java.lang.ClassCastException : org. hibernate.collection.PersistentSet 无法转换为 java.util.HashSet

java - jpa中@ColumnDefault的值字段是什么?

java - JPA 查询调用 getter 数百万次

java - 如何从 Spring @Query 注解调用 SQL 函数

java - 如何比较单个字符串中的元素?

java - 如何在 SQL 查询中安全地使用 * 作为通配符

java - 为什么在堆中创建字符串对象和字符串文字的串联?

java - Android - 如何将我自己的音频编解码器添加到 AudioRecord?