这是一个非常天真的实现,您需要根据您的情况适当调整它.但是,要使此实现可重用,您需要一个包含该语言的可嵌入类 – >文字映射.然后使用hashmap构建一个实体,因为你需要像一个唯一的ID这样的东西.
@Embeddable
public class LocalizedString {
private String language;
private String text;
public LocalizedString() {}
public LocalizedString(String language, String text) {
this.language = language;
this.text = text;
}
// auto-generated getters, setters, hashCode(), equals(), etc.
}
@Entity
@Table(schema = "app", name = "mling_str")
public class MultilingualString {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "string_id")
private long id;
@ElementCollection(fetch = FetchType.EAGER)
@MapKey(name = "language")
@CollectionTable(schema = "app", name = "ming_str_map",
joinColumns = @JoinColumn(name = "string_id"))
private Map map = new HashMap();
public MultilingualString() {}
public MultilingualString(String lang, String text) {
addText(lang, text);
}
public void addText(String lang, String text) {
map.put(lang, new LocalizedString(lang, text));
}
public String getText(String lang) {
if (map.containsKey(lang)) {
return map.get(lang).getText();
}
return null;
}
// auto-generated getters, setters, hashCode(), equals(), etc.
}
















