我有幾個對象使用Hibernate,BatchTransaction和Transaction映射到數據庫中的表。 BatchTransaction的表(batch_transactions)具有對事務的外鍵引用,名爲transaction_id。如何直接通過Hibernate更新外鍵值?
在過去,我已經使用了用於內部調用運行批處理事務,並完成從BatchTransaction的參考交易,一旦交易完成一個批處理運行。插入事務後,我只需調用batchTransaction.setTransaction(txn),所以我有一個從BatchTransaction到Transaction的@ManyToOne映射。
我改變批處理運行,以便它通過Web服務執行其交易。新插入的Transaction的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文件作爲參考,然後我們可以看看。 – 2011-06-13 02:12:55
我沒有HBM文件,因爲我使用了註釋。我會添加映射。 – Rafe 2011-06-15 17:12:08
請參閱下面的答案 – 2011-06-16 04:37:07