마지막 비즈니스 트랜잭션 중에 업데이트 된 데이터를 기반으로 서로 다른 유형의 관련성을 가질 수있는 데이터베이스가 있습니다. 예를 들어 정책 작성 응용 프로그램에있을 수 있습니다. 기본 테이블에는 일반 정책 수준 정보가 들어 있으며 에이전트의 정보 및 피보험자 정보와 같은 정보가 들어있는 관련 테이블이 있습니다. 첫 번째 트랜잭션이 발행되면 모든 테이블이 채워지지만 후속 트랜잭션에서는 업데이트가있는 테이블 만 데이터베이스에 유지됩니다. 지금은 JPA를 구현하는 클래스를 작성하여 테이블 간의 관계를 일대일로 정의합니다. 그런 다음 각 관계에 대한 사용자 지정 로더를 구현하여 정책 엔티티를 검색 할 때마다 해당 테이블의 최신 버전을 검색 할 수 있는지 확인해야합니다. 누구든지이 논리를 구현하는 방법을 알고 있습니까? 나는 @NamedNativeQuery
을 사용하고 HQL을 사용해 보았습니다. 그러나 두 경우 모두 내가 지정한 열 이름이 존재하지 않는다고 알려줍니다.사용자 정의 OneToOne Hibernate/JPA Association
도움을 주시면 감사하겠습니다.
내가하는 일을 설명하기 위해 아래에 코드가 제공되었습니다. 위의 예에서
@Entity
@NamedNativeQuery(name = "loadLatestBilling",
query = "Select {i.*} from TransactionSummary as ts outer join BillingInfo i on i.systemAssignId=ts.systemAssignId where ts.systemAssignId=:systemAssignId and i.transSeqNo<=:transSeqNo order by i.systemAssignId, i.transSeqNo DESC",
resultClass = BillingInfo.class)
public class CoTransactionSummary implements java.io.Serializable,
CdbCoTransactionSummary {
@OneToOne(targetEntity = BillingInfo.class, fetch = FetchType.LAZY)
@org.hibernate.annotations.NotFound(action = org.hibernate.annotations.NotFoundAction.IGNORE)
@Loader(namedQuery = "loadLatestBilling")
public BillingInfo getBillingInfo() {
return billingInfo;
}
public void setBillingInfo(BillingInfo billingInfo) {
this.billingInfo= billingInfo;
}
}
SystemAssignId는 그 엔티티에 속하는 모든 레코드에 공통 것이다. 각 연속 트랜잭션마다 transSeqNo가 증가하므로 사용자 정의 로더는 systemAssignId와 연관된 가장 높은 값을 찾습니다.
제공 할 수있는 도움에 감사드립니다.