Я работаю над приложением, для которого требуется использовать приведенный ниже запрос в режиме гибернации.
select
requestorc0_.LASTUPDTED as LASTUPDTED
requestcom1_.START_DATE as START_DATE
from
REQUESTOR_CONTACT requestorc0_
left outer join
REQUESTOR requestcom1_ on requestorc0_.REQUESTOR_ID=requestcom1_.REQUESTOR_ID
inner join REVIEW c1 on (requestorc0_.requestor_contact_id=c1.requestor_id OR requestorc0_.requestor_id=c1.requestor_id)
Мне нужно преобразовать этот запрос в компонент Hibernate.Я пытаюсь использовать формулу соединения, но не могу найти правильный способ сделать это.
@Entity
@Table(name = "REVIEW")
public class RequestReview implements Serializable {
@Id
@Column(name = "RECORD_ID")
private Integer recordId
@Column(name = "REQUESTOR_ID")
private Integer requestorId;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumnOrFormula(formula = @JoinFormula(
value = "(SELECT r FROM RequestorContact r WHERE r.requestorContactId = requestorId OR r.requestorId = requestorId LIMIT 1)",
referencedColumnName = "REQUESTOR_CONTACT_ID"))
private RequestorContact requestorContact;
}
@Entity
@Table(name = "REQUESTOR_CONTACT")
public class RequestorContact implements Serializable {
@ID
@Column(name = "REQUESTOR_CONTACT_ID")
private Integer requestorContactId;
@Column(name = "REQUESTOR_ID")
private Integer requestorId;
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "REQUESTOR_ID", insertable = false, updatable = false)
private RequestCompany requestCompany;
}
@Entity
@Table(name = "REQUESTOR")
public class RequestCompany implements Serializable {
@Id
@Column(name = "REQUESTOR_ID", unique = true, nullable = false)
private Integer requestorId;
}
Я не могу создать правильную формулу в соответствии с ожидаемым запросом выше.Может кто-нибудь, пожалуйста, помогите мне в этом.