Hibernate 从多对一关系中获取剩余对象
Hibernate get remaining objects from many to one relation
我有一个存储俱乐部和球队的数据库。
一个俱乐部有多个团队,一个团队只是一个俱乐部的一部分。
是否可以使用查询不属于特定俱乐部的所有球队
休眠条件 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]
}
应该是这样的:
Criteria criteria=session.createCriteria(Team.class);
.createAlias("club", "c")
.add( Restrictions.not(Restrictions.like("c.name", "nameOfTheClubIAmLookingFor", MatchMode.EXACT)) )
List<Team> teams=criteria.list();
作为上述答案的细微变化,如果您已经有了 Club 对象,您希望找到不属于它的所有球队,您应该能够执行类似以下操作:
Criteria criteria = session.createCriteria(Team.class);
criteria.add(Restrictions.ne("club", myClub));
List<Team> teams = criteria.list();
这避免了查询俱乐部名称,恕我直言,代码更简洁。
我有一个存储俱乐部和球队的数据库。 一个俱乐部有多个团队,一个团队只是一个俱乐部的一部分。 是否可以使用查询不属于特定俱乐部的所有球队 休眠条件 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]
}
应该是这样的:
Criteria criteria=session.createCriteria(Team.class);
.createAlias("club", "c")
.add( Restrictions.not(Restrictions.like("c.name", "nameOfTheClubIAmLookingFor", MatchMode.EXACT)) )
List<Team> teams=criteria.list();
作为上述答案的细微变化,如果您已经有了 Club 对象,您希望找到不属于它的所有球队,您应该能够执行类似以下操作:
Criteria criteria = session.createCriteria(Team.class);
criteria.add(Restrictions.ne("club", myClub));
List<Team> teams = criteria.list();
这避免了查询俱乐部名称,恕我直言,代码更简洁。