【发布时间】:2014-04-29 16:47:23
【问题描述】:
我有以下两个表:
TABLE A:
INT id
VARCHAR x
PRIMARY KEY (id)
TABLE B:
INT a_id
VARCHAR locale
VARCHAR z
PRIMARY KEY (a_id, locale)
这基本上是一个简单的 OneToMany 关系。表B 包含表A 中引用行的ID (a_id) 加上locale。这意味着:A 中的每个条目都可以在表 B 中具有 0..* 条目,每个条目都有一个不同的 locale 值。
我有以下两个类,它们应该代表那些表:
@Entity
@Table(name="A")
class A {
@Id
@Column(name="id")
int id;
@Column(name="x")
String x;
@OneToMany(mappedBy="a") // ???
@MapKey... // ???
Map<String, B> bMap;
}
@Entity
@Table(name="B")
class B {
@ManyToOne
@JoinColumn(name="a_id")
A a;
@Column(name="locale")
String locale;
@Column(name="z")
String z;
}
现在缺少两件事:
Map<String, B> bMap的注释。我只是不知道我是否应该使用@MapKey或@MapKeyColumn以及如何映射到该复合键。如果我应该/必须使用@OneToMany?B类当然需要一个复合键。我应该使用@EmbeddedId还是@IdClass?
您能否提供一些此场景的示例代码?
谢谢!
【问题讨论】:
标签: java hibernate jpa map jpa-2.0