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

标签 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

最佳答案

我想这就是您要找的:

@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.

关于java - Hibernate:使用备用连接列映射集合属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23741986/

相关文章:

java - Android,项目列表未正确显示

Java : Creating chunks of List for processing

django - 在使用 Heroku 时为 Django 中的本地开发配置 postgresql 数据库

java - 引用java正则表达式命名组的多个匹配项

java - 尝试从 google url 获取 html 文本,但出现错误 401

java - 保存聚合根而不暴露嵌套实体

java - Hibernate 多对一映射

java - 使用 Hibernate 和多线程批量更新 DB2

postgresql - 如何在多个一对多关系中加入没有额外重复的表

python - Django 唯一一起约束失败?