如何在没有getter的情况下获取附加到实体的实体列表?

时间:2016-03-11 17:51:29

标签: java hibernate entity spring-data

我正在尝试获取与一个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

}

2 个答案:

答案 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层从数据库检索狗窝的狗列表之外别无选择。