我想使用ORM Hibernate。并面临以下问题。 很少有表可以翻译不同的语言。例如它看起来像这样:
在数据库中,我可以使用join并获取所有必需的数据
e.g:SELECT * FROM car c
JOIN translation t on c.description = t.description
WHERE t.type = 'CAR'
正如您所见,表'translation'具有用于按类型过滤的列'type'。
那么主要问题是如何创建正确的实体和映射?
答案 0 :(得分:0)
汽车有OneToMany翻译。类似的城市有OneToMany翻译。 但是每个翻译都有零到一辆车或零到一个城市。
翻译适用于汽车或城市,因为其描述涉及城市或汽车。这是通过ManyToOne表示法实现的。在休眠中没有注释来明确说出Zero的范围。以下是获得公平的映射概念。即使我认为城市有OneToMany汽车,我也没有假设城市与汽车有任何关系。
@Entity
class Car
{
private int Id;
private String name;
//.......... declare all variables that you need
@OneToMany(mappedBy = "car")
private List<Translation>
//getters and setters
}
@Entity
class City
{
private int Id;
private String name;
//.......... declare all variables that you need
@OneToMany(mappedBy = "city")
private List<Translation>
//getters and setters
}
@Entity
class Translation
{
private int Id;
private String language;
//.......... declare all variables that you need
@ManyToOne
private Car;
@ManyToOne
private City;
//getters and setters
}