我很遗憾将以下结构映射到JPA注释。与JPA @OneToMany和复合PK丢失
+===========+ +====================+
| Offer | | Text |
+-----------+ 1 0..* +--------------------+
| id (pk) |-------------| textkey (pk) |
| namekey | | languagecode (pk) |
| ... | | text |
+===========+ | ... |
+====================+
因此,每个要约的名称都是国际知名的。由于我在应用程序中反复使用了相同的案例(提供的内容还包括i18n评论,Article有国际化名称等)。我想要一个带有复合主键的Text实体。对于每个关键字,都有与支持语言一样多的记录。文本示例:
+=====================================+
| textkey | languagecode | text |
+=====================================+
| offer5Name | en | foo |
| offer5Name | fr | bar |
| offer6Name | en | hello |
...
要约实体会将Text#textkey存储在其namekey列中。
在Java方面,我希望Offer有一组名称或更好的名称映射,所以我可以使用类似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;
问:我怎么注释的要约类的“名”的成员变量来获得我需要的?