Hibernate:使用备用连接列映射集合属性

时间:2014-05-19 15:46:43

标签: java hibernate postgresql hibernate-mapping

场景:使用基于xml的映射的Hibernate 3.6,Java7,Postgresql 8.3。

我目前正在重构一个应用程序,我已经为数据库创建了这个场景:

main_table
 id integer
 other_field string 
 (id) PK


secondary_table
 other_field string
 value string
 (other_field, value) PK

基本上,有一个辅助表,其中包含" other_field"在主桌上匹配;我需要在main_table中提取某个记录的所有值并映射它们。

在SQL中,我使用如下查询:

SELECT value FROM secondary table INNER JOIN main_table ON secondary_table.other_field == main_table.other_field where main_table.id = 1;

但是我不明白如何使用这样的查询(或者如果我建议的那个不是hibernate友好的那个)将Java基本类型(字符串)的集合映射到Main对象,那么我可以拥有"价值观"我的映射对象上的属性,应该是一个Set< String>

1 个答案:

答案 0 :(得分:0)

我认为这就是你要找的东西:

@Entity
public class Primary { // Main table
  @Id
  @Column(name="EMP_ID")
  private long id;
  ...
  @ElementCollection
  @CollectionTable(
        name="PRIMARY_SECONDARY",
        joinColumns=@JoinColumn(name="PRIMARY_ID")
  )
  private Set<Secondary> phones;
  ...
}

@Embeddable
public class Secondary {  // Secondary table
  private String value;
  ...
}

Full example and further details.