У меня есть пара объектов, которые сопоставляются с таблицами в базе данных, используя Hibernate, BatchTransaction и Transaction.Таблица BatchTransaction (batch_transactions) имеет ссылку на внешний ключ для транзакций с именемaction_id.
В прошлом я использовал пакетный обработчик, который использовал внутренние вызовы для запуска пакетных транзакций и завершал ссылку из BatchTransaction на Transaction, как толькотранзакция завершена.После того, как транзакция была вставлена, я просто вызываю batchTransaction.setTransaction (txn), поэтому у меня есть отображение @ManyToOne из BatchTransaction в Transaction.
Я изменяю пакетный исполнитель, чтобы он выполнял свои транзакции через Интернетоказание услуг.Идентификатор недавно вставленной транзакции будет возвращен службой, и я хочу обновить транзакцию_id в BatchTransaction напрямую (вместо того, чтобы использовать установщик для поля транзакции в BatchTransaction, что потребовало бы от меня ненужной загрузки нового вставленного элемента).
Кажется, что наиболее логичный способ сделать это - использовать SQL, а не Hibernate, но мне было интересно, есть ли более элегантный подход.Есть идеи?
Вот базовое отображение.
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
{
}
Идея заключается вобновить столбец query_id в batch_queries без установки свойства «query» для объекта BatchQuery.