使用 JPA 注释映射地图集合
嗨,大家好 我正在使用 hibernate 将应用程序从 xml 迁移到 JPA 注释。 目前,我一直坚持使用注释来映射具有复合 ID 的对象地图 这就是我尝试做的事情。
class A
{
...
@OneToMany()
@JoinColumn(name="A_ID")
/* B_ID should be the key in this map */
private Map map = new HashMap();
}
class B
{
@EmbeddedId
private CompoundId id;
}
@Embeddable
class CompoundId
{
@Column(name = "A_ID")
String aId;
@Column(name = "B_ID")
long bId
}
我也尝试
@OneToMany()
@JoinColumn(name="A_ID", insertable=false, updatable=false)
@MapKeyColumn(name="B_ID")
private Map map = new HashMap();
Caused by: java.sql.SQLException: ORA-00904: "B1_"."ID": invalid identifier
但没有成功
过映射 XML,
<map name="map" inverse="true" cascade="all-delete-orphan" lazy="false">
<key>
<column name="A_ID" />
</key>
<map-key type="long" column="B_ID"/>
<one-to-many class="B" />
</map>
,它看起来像hibernate 3.2.7.ga 和注释 3.4.0.GA
thx!
Hi guys
I am migrating an application using hibernate from xml to JPA annotations.
Currently I am stuck on mapping a map of objects with compound id using annotations
This is how am trying to do it.
class A
{
...
@OneToMany()
@JoinColumn(name="A_ID")
/* B_ID should be the key in this map */
private Map map = new HashMap();
}
class B
{
@EmbeddedId
private CompoundId id;
}
@Embeddable
class CompoundId
{
@Column(name = "A_ID")
String aId;
@Column(name = "B_ID")
long bId
}
I have also tried
@OneToMany()
@JoinColumn(name="A_ID", insertable=false, updatable=false)
@MapKeyColumn(name="B_ID")
private Map map = new HashMap();
Caused by: java.sql.SQLException: ORA-00904: "B1_"."ID": invalid identifier
with no luck
in mapping XML it looks like this
<map name="map" inverse="true" cascade="all-delete-orphan" lazy="false">
<key>
<column name="A_ID" />
</key>
<map-key type="long" column="B_ID"/>
<one-to-many class="B" />
</map>
hibernate 3.2.7.ga and annotations 3.4.0.GA
thx !
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
尝试一下:
我可能会遗漏一些东西,但
@MapKeyColumn
是重要的部分。我之前已经成功完成此操作,但我的代码在办公室,所以我无法仔细检查它。Give this a try:
I might be missing something, but the
@MapKeyColumn
is the important part. I have done this successfully before but my code is at the office so I can't double check it.确实有效,问题似乎出在 B 类的复合 id 的映射中
干杯
did work, the problem appeared to be in mapping of composite id of B class
Cheers