复合主键的Hibernate逆连接

时间:2014-10-18 07:50:09

标签: java hibernate jpa

我是hibernate的新手。

我有以下情况,

@Entity(name="A")
Class A {
   @Id
   int id;

   Set<B> listB;
}

@Entity(name="B")
Class B {
   @Id
   CompositebPK bPk;
}

Class CompositebPK {
   @Column(name="id")
   int aId;
   @Column(name="user_name")
   String uname;
}

@Entity (name = "user")
Class User {
   @Column (name ="user_name")
   String uname;
}

表结构如下,

Table A:
int id

Table B:
int id
String uname

User:
String uname
String password

A到B是1对多关系。 B到用户是1对多。

我希望在A中列出B。

解决问题的最佳方法是什么?

在我搜索的网络中,我只是获取简单列的反向连接信息,如果我尝试它不能解决,那么是否有一种特殊的方法来实现这一目标?

1 个答案:

答案 0 :(得分:1)

尝试以下映射配置:

A实体类中:

@Entity(name="A")
class A {
   @Id
   int id;

   @OneToMany(fetch = FetchType.LAZY, mappedBy = "bPk.a")
   @Cascade(value = { CascadeType.DELETE })
   Set<B> listB;
}

CompositebPk

class CompositebPK {
   @ManyToOne(fetch = FetchType.LAZY)
   @JoinColumns({ @JoinColumn(referencedColumnName = "id", nullable = false) })
   A a;
   @Column(name="user_name")
   String uname;
}