如何在hibernate中使实体成为正确的方法

时间:2016-10-17 16:50:50

标签: java hibernate

我有简单的表格:

CREATE TABLE MyTable (
   id INTEGER PRIMARY KEY NOT NULL ,
    A_id INTEGER NOT NULL,
    B_id INTEGER NOT NULL ,
  FOREIGN KEY (B_id) REFERENCES tableB (B_id),
  FOREIGN KEY (A_id) REFERENCES tableA (A_id)
);

我也有实体

@Entity
@Table(name = "MyTable")
public class MyTableEntity
{
private Long id;
private Long A_Id;
// private Long B_Id;
private List<B_Entity> list_of_b_elements;

@Id
@Column(name = "id")
public Long getId() {
    return id;
}

public void setId(Long Id) {
    this.Id = Id;
}

@Basic
@Column(name = "A_id")
public Long getA_Id() {
    return A_Id;
}

public void setA_Id(Long A_Id) {
    this.A_Id = A_Id;
}

@OneToMany(
        cascade = CascadeType.ALL,
        orphanRemoval = true,
        fetch = FetchType.LAZY)
public List<B_Entity> getList_of_b_elements() {
    return list_of_b_elements;
}

public void setList_of_b_elements(List<B_Entity> list_of_b_elements) {
    this.list_of_b_elements = list_of_b_elements;
}

}

我希望以这种方式获取MyTableEntity对象:

MyTableEntity: 
A_id << ------- for example 32
List<B_Entity>  << ----- for example B_1, B_2, B_3 elements

或者这样:

MyTableEntity: 
A_id << ------- for example 32
B_Entity  << -----  B_1

A_id << ------- for example 32
B_Entity  << -----  B_2

A_id << ------- for example 32
B_Entity  << -----  B_3

这是我的DAO功能,我有A_id:

List<MyTableEntity> getMyTableEntityByA_Id( Long a_Id)
{
    List<MyTableEntity> myTableEntityList = (List<MyTableEntity>) getCriteria()
            .add(Restrictions.eq("A_Id", a_Id))
            .setFetchMode("list_of_b_elements", FetchMode.JOIN)
            .list();

  return myTableEntityList;
}

我想只在一个dircetion中实现这个目标(A_Entity和B_Entity不知道这个)。 它现在不起作用。我的DAO功能的结果是具有良好A_Id的MyTableEntity对象,但我没有得到list_of_b_elements。 有人可以帮我,告诉我问题出在哪里以及如何实现这个目标?

我认为我的部分问题与getList_of_b_elements()。

有关

0 个答案:

没有答案