基本的Hibernate / JPA Mapping问题

时间:2010-08-28 09:22:56

标签: java hibernate jpa annotations mapping

我必须要相互映射的表格。 我想填充2个下拉列表:code_r和code_l。 当我从code_r中选择一个值时,code_l应该只显示某些记录。 在我的数据库中,我有2个表:

Table code_r
===================
CODE         INT
LIBELLE      VARCHAR

并且

Table code_l
===================
ID           BIGINT
CODE_R_ID    INT
LIBELLE      VARCHAR

一个code_r可以有多个与之关联的code_l(基于code_r_id(不是在code_l定义中定义为外键)。当然,code_l只能与一个code_r相关联。

以下SQL查询可以正常工作:

SELECT * 
FROM code_r r
 left join `code_l` l on l.code_r_id = r.code;

如何在CodeR和CodeL类中使用JPA / Hibernate-3.5注释来实现它?

任何帮助将不胜感激。提前谢谢。

2 个答案:

答案 0 :(得分:3)

CodeR类中的

@OneToMany(的mappedBy = “code_r_id”)

收集elementsFromL;


CodeL类中的

@ManyToOne

CodeR code_r_id;

答案 1 :(得分:3)

使用Hibernate(现在在JPA 2.0中标准化),您可以使用单向一对多关联,而无需使用JoinColumn注释的连接表:

像这样注释CodeR:

@Entity
public class CodeR {
   @Id
   private Integer code;
   private String libelle;

   @OneToMany
   @JoinColumn(name="CODE_R_ID")
   Set<CodeL> codeLs = new HashSet<CodeL>():

   // getters, setters
}   

和CodeL

@Entity
public class CodeL {
   @Id
   private Integer id;
   private String libelle;

   // getters, setters, equals, hashCode
}   

和JPQL查询:

SELECT r FROM CodeR LEFT JOIN  r.codeLs