如何创建正确的实体映射?

时间:2016-08-23 21:04:20

标签: java hibernate orm

我想使用ORM Hibernate。并面临以下问题。 很少有表可以翻译不同的语言。例如它看起来像这样: enter image description here

在数据库中,我可以使用join并获取所有必需的数据 e.g:SELECT * FROM car c JOIN translation t on c.description = t.description WHERE t.type = 'CAR'

正如您所见,表'translation'具有用于按类型过滤的列'type'。

那么主要问题是如何创建正确的实体和映射?

1 个答案:

答案 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
 }