由引用表的属性映射的表中的2个属性

时间:2011-09-19 10:20:06

标签: java hibernate java-ee jpa

我需要你的帮助。

我正在尝试用hibernate和jpa映射我的对象。

我有2个表,参考和人(例如)

      the attributs of reference are ( id_ref, description_ref)
      the attributes of person are : id_person,addresse,colorEyes,jobetc).

和address是一个字符串,但所有其他字符串都是int。 现在,colorEyes和job中的2个int值引用了带有

的引用表中的2个不同的int
      person.colorEyes=reference.id_ref  and person.job=reference.id_ref , those  id_ref are not the same for colorEyes and job.

我想映射引用和person表之间的关系,是否可以使用hibernate和jpa注释来实现?我应该放置一个oneToOne类型的关系吗?即使两个属性都与引用表有关?我找到了可选择的注释,但是他们总是谈论两个属性之间的不同表格并不总是相同的。

如果无法使用别名吗?或者我应该选择HQL?

任何事情都会非常有帮助。坦克

1 个答案:

答案 0 :(得分:1)

我不认为Hibernate会对以下内容产生任何问题......

@ManyToOne( ...)
@JoinColumn(name="colorEyes")
public Reference getColorEyes() {
    return company;
}

@ManyToOne( ...)
@JoinColumn(name="jobetc")
public Reference getJobEtc() {
    return company;
}

请注意,我使用 ManyToOne 而不是 OneToOne ,因为我认为多人可以拥有相同的眼睛颜色。

但是,您可能希望真正考虑将引用表拆分为多个表,每个表对应一种数据类型。这将是更好的数据库格式Third Normal Form

这也会使您的代码更具可读性,因为您可以使用不同的类来保存EyeColor和JobEtc。