这是我第一次使用 Maps 对 JPA 进行持久化。在概念层面上,我也有点迷失自己。
我有一个对象(poi),它没有一个或多个不同语言的描述。我希望 poi 对象有一张地图 [lang, description]
@Entity
public class Poi {
@Id
@Column(name = "id")
private Long id;
@OneToMany(cascade = CascadeType.ALL)
@JoinTable(name = "description_poi_mapping",
joinColumns = {@JoinColumn(name = "poi_id", referencedColumnName = "id")},
inverseJoinColumns = {@JoinColumn(name = "description_id", referencedColumnName = "id")})
@MapKeyJoinColumn(name = "lang_id")
@MapKey
private Map<Lang, Description> descriptionCourte;
描述:
@Entity
public class Description {
@Id
@Column(name = "id")
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
private String label;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "lang_id")
private Lang lang;
朗:
@Entity
public class Lang {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
@Column(name = "id")
private Long id;
@Column(name = "label")
private String label;
因此,描述包含一个附加到语言(fr、en、it、de、...)的标签,我希望我能在地图上做;
> poi.getDescriptionCourte().get("en") or
> poi.getDescriptionCourte().get("fr")
基本上,地图的关键是语言标签(如果存在)。如果“poi”有1个英文描述和1个法文描述,那么我的地图必须有2个记录,其键值为“fr”或“en”(为“lang”记录的标签)
当然,目标是能够将 lang 类重用于其他描述。
排除我当前的结果根本不是我想要的,这里是:
请问你能帮帮我吗 ?
感谢您。