Hibernate, BatchTransaction 및 Transaction을 사용하여 데이터베이스의 테이블에 매핑되는 몇 개의 객체가 있습니다. BatchTransaction의 테이블 (batch_transactions)에는 transaction_id라는 트랜잭션에 대한 외래 키 참조가 있습니다.Hibernate를 통해 외래 키 값을 직접 업데이트하는 방법은 무엇입니까?
이전에는 트랜잭션이 완료되면 내부 호출을 사용하여 배치 트랜잭션을 실행하고 BatchTransaction에서 Transaction으로 참조를 완료하는 배치 러너를 사용했습니다. 트랜잭션이 삽입 된 후에는 batchTransaction.setTransaction (txn)을 호출하기 때문에 BatchTransaction에서 Transaction으로 @ManyToOne 매핑을 갖습니다.
웹 서비스를 통해 트랜잭션을 실행하도록 배치 러너를 변경하려고합니다. 새로 삽입 된 트랜잭션의 ID가 서비스에 의해 반환되고 BatchTransaction에서 transaction_id를 직접 업데이트하려고합니다 (BatchTransaction의 Transaction 필드에 setter를 사용하지 않고 새로 삽입 한 항목을 불필요하게로드해야 함).
하이버 네이트보다는 SQL을 사용하는 것이 가장 논리적 인 방법 인 것처럼 보이지만 좀 더 우아한 접근 방법이 있는지 궁금합니다. 어떤 아이디어?
다음은 기본 매핑입니다.
BatchQuery.java
@Entity
@Table(name = "batch_queries")
public class BatchQuery
{
@ManyToOne
@JoinColumn(name = "query_id")
public Query getQuery()
{
return mQuery;
}
}
Query.java
@Entity
@Table(name = "queries")
public class Query
{
}
아이디어는 BatchQuery 개체에 "쿼리"속성을 설정하지 않고 batch_queries에서 query_id 열을 업데이트하는 것입니다.
은 참조 용 HBM 파일을 넣을 수 있습니다. 그런 다음 살펴볼 수 있습니다. –
어노테이션을 사용하기 때문에 HBM 파일이 없습니다. 그래도 매핑을 추가하겠습니다. – Rafe
아래 나의 답변보기 –