У меня есть устаревшая база данных, которую нельзя изменить, поскольку она подключена к стороннему приложению.
Один из запросов, с которыми я работаю для нового приложения, выглядит следующим образом:
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.
Спасибо за помощь!