【发布时间】:2010-07-21 16:36:41
【问题描述】:
我有 2 个实体/表。
一个是一个适当的实体,我们称之为data。它有许多包含所谓“多语言代码”的字段。
第二个表code 包含多语言值本身。
这是一些示例数据:
Data table
id name continentCode countryCode
------------------------------------
1 Toto EU CH
2 Titi AS CN
Code table
id code language text
----------------------------
1 EU EN Europe
2 EU FR Europe
3 EU DE Europa
4 CH EN Switzerland
5 CH FR Suisse
6 CH DE Schweiz
... etc
我想将数据实体中的大洲、国家等属性映射为地图,如下所示:
@OneToMany()
@MapKey(name="languageCode")
private Map<String, Code> continents;
这样我就可以像这样阅读正确语言的文本:
Data toto = dao.findByName("Toto");
String text = toto.getContries.get("FR").getText(); //--> returns "Suisse"
String text = toto.getContries.get("EN").getText(); //--> returns "Switzerland"
我还需要能够使用用户的语言对这些“代码”的值进行文本搜索。 (例如,获取法国国家/地区='suisse'的所有数据!)
那么,是否可以使用不是当前实体主键的键字段映射OneToMany 集合?我需要我的大洲集合“代码表中的所有记录,其中代码 = 我的 continentCode 属性的值”。或者也许有更合适的方式来表示这种关系?
注意:很遗憾,我无法更改 SQL 架构...
【问题讨论】:
标签: hibernate mapping hibernate-mapping hibernate-onetomany