【发布时间】:2011-07-08 23:19:44
【问题描述】:
我有一个无法更改的旧数据库,因为它已连接到第 3 方应用程序。
我正在处理的一个新应用程序查询如下所示:
SELECT COL1, COL2, COL3, CODE1, CODE2,
(SELECT CODE_DESC FROM CODETABLE WHERE CODE_TYPE='A' CODE=INCIDENT.CODE1) AS CODE_DESC1,
(SELECT CODE_DESC FROM CODETABLE WHERE CODE_TYPE='B' CODE=INCIDENT.CODE2) AS CODE_DESC2
FROM INCIDENT
WHERE...
我试图弄清楚如何将该查询转换为一组 Hibernate 实体,但我是 Hibernate 新手。我有 3 个问题:
- 如何以一对一的关系多次将一个实体加入另一个实体? (子查询)
- 如何使用具有固定值 (CODE_TYPE='A') 的参数以一对一的关系将一个实体连接到另一个实体?
- 是否可以使用注释来执行上述任一操作(因为我喜欢这些)?
这是我迄今为止尝试过但没有奏效的方法:
对象 1:
@Entity
@Table (name="Incident")
public class Incident {
private String col1;
private String col2;
private String col3;
private String code1;
private String code2;
private Code code_desc1;
//private String code_desc2;
/**
* @param code_desc1 the code_desc1 to set
*/
public void setCode_desc1(Code code_desc1) {
this.code_desc1 = code_desc1;
}
/**
* @return the code_desc1
*/
@OneToOne
@JoinTable(name="Codes",
joinColumns=@JoinColumn(name="code1", referencedColumnName="CODE"),
inverseJoinColumns=@JoinColumn(name="CODE_TYPE", referencedColumnName="'A'")
)
public Code getCode_desc1() {
return code_desc1;
}
// Rest of Getters & Setters...
}
对象 2:
@Entity
@Table (name="CODETABLE")
public class Codes {
@Column(name="CODE_DESC")
private String codeDesc;
@Column(name="CODE_TYPE")
private String codeType;
@Column(name="CODE")
private String code;
// Getters & Setters
}
基本上,当我运行程序时,它会抱怨“A”不是 Codes 实体中的列名。 感谢您的帮助!
【问题讨论】:
标签: java hibernate jpa join one-to-one