我正在使用jpa持久性注释。我有2个对象,Order(父)和Transaction(子)。我希望能够获取我的oder并获得其交易。问题是我不想在保存订单时自动保存我的交易。在我保存之前,我需要对它进行一些特殊的处理。
有没有办法告诉hybernate不要保留子对象但是在我检索命令时仍然会获取它?
我试过这样的事情
@OneToOne(cascade=CascadeType.REFRESH)
@JoinColumn(name = "commande_id", insertable=false, updatable=false)
这不起作用。我一直收到这条消息:
对象引用未保存的瞬态实例 - 在刷新之前保存瞬态实例
当我尝试保存订单对象时。第一次保存订单时,事务对象包含一些数据但尚未准备好保存。
提前致谢
答案 0 :(得分:1)
您可以使关系双向并由交易方控制。
像
这样的东西class Order {
@OneToOne(mappedBy="order", cascade={}, insertable=false, updatable=false)
private Transaction transaction;
}
class Transaction {
@OneToOne(name = "order_fk")
private Order order;
}
如果以这种方式执行,则order.transaction对数据库没有写入影响。 但即使它有效,我相信它是一个黑客。
答案 1 :(得分:1)
如果您从会话中分离交易怎么办?
session.evict(transaction);
不确定这是否有效但只是一个想法。