我正在尝试获取与一个Kennel实体相关的Dogs实体列表。
Dogs和Kennels之间存在many to one
关系,即狗窝可以养很多只狗,但狗只能养一只犬。
KENNEL_ID是DOG表中的foreign key
。
问题在于狗窝上没有狗列表,所以我不能做一些简单的事情:
List<Dogs> allDogsInOneKennel = kennel.getAllDogs();
但对于狗实体,我可以:
dog.getKennel();
有没有办法让我可以回溯所有与一只犬舍相关的狗?
Kennel实体:
@Entity
@Table(
name = "KENNEL"
)
public class Kennel {
@Id
private String id;
@Column(
location = "LOCATION"
)
private String location;
public Kennel() {
}
//getters setters
}
答案 0 :(得分:1)
请根据需要查找伪代码和示例。
Kennel 1:N Dog 一个狗窝 - &gt;很多狗
Kennel
------
Kennel_ID:1
location:"abc"
Dog
---
Dog_Id:1
Dog_Name:DogName1
Dogken_Ref_Id:1
Dog_Id:2
Dog_Name:DogName2
Dogken_Ref_Id:1
@Entity
@Table(name = "KENNEL")
public class Kennel {
@Id
@Column(name = "Kennel_ID")
private String id;
@Column(name = "LOCATION")
private String location;
@OneToMany(mappedBy="Kennel")
public Set<Dog> getDog();
}
@Entity
@Table(name = "Dog")
public class Dog{
@Id
@Column(name = "Dog_id")
private int dogId;
@Column(name = "Dog_name")
private String dogName;
@Column(name = "Dogken_Ref_Id")
private int kenRefId;
@ManyToOne
@JoinColumn(name="dogken_ref_id", referenceColumnName="Kennel_ID")
private Kennel kenDetail;
}
答案 1 :(得分:1)
有两种方法:
1 - 就像你在Dog类中声明@ManyToOne一样,你可能想要在Kennel类中声明@OneToMany关联:
@OneToMany(mappedBy="kennel", cascade = CascadeType.ALL)
private Set<Dog> dogs = new HashSet<>();
(mappedBy =&#34; *&#34;,* 表示Dog类中@ManyToOne的属性名称)。
2 - 如果您不想做上述事情,除了使用DAO / Repository层从数据库检索狗窝的狗列表之外别无选择。