我对用JPA注释映射下面的结构非常迷茫。
+===========+ +====================+
| Offer | | Text |
+-----------+ 1 0..* +--------------------+
| id (pk) |-------------| textkey (pk) |
| namekey | | languagecode (pk) |
| ... | | text |
+===========+ | ... |
+====================+
所以,每个报价都有一个我知道的名字。由于我在应用程序中反复出现相同的情况(offer也有一个i18n注释,文章有一个i18n名称等),所以我希望有一个具有复合主键的文本实体。对于每个键,记录的数量与支持的语言的数量一样多。文本样本:
+=====================================+
| textkey | languagecode | text |
+=====================================+
| offer5Name | en | foo |
| offer5Name | fr | bar |
| offer6Name | en | hello |
...
offer实体将在其namekey列中存储text textkey。
在Java方面,我希望提供一组名称或甚至更好的名字地图,这样我就可以有一个方法。
Text getName(String language)
而不是
Set<Text> getNames()
.
我已经拥有的是文本及其复合主键textpk:
@Entity
public class Text {
@EmbeddedId
private TextPK primaryKey;
@Column(name = "text")
private String text;
PK
@Embeddable
public class TextPK implements Serializable {
@Column(name = "textkey")
private Long key;
@Column(name = "languagecode")
@Enumerated(EnumType.STRING)
private LanguageCode languageCode;
问题:如何在offer类中注释“name”成员变量以获得所需的内容?