有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java访问创建Hibernate映射对象的事务内部的对象

我希望能够访问创建它的事务中的Hibernate映射对象,以便对其进行克隆。我之所以想通过Hibernate Session克隆它,而不仅仅是使用对象,这是有原因的。克隆()(说来话长…)

Transaction tran = session.beginTransaction();

Gadget gadg = new Gadget(1 /* id */, "Gadget Name", "some label", 123);

session.save(gadg);

//this returns null
Gadget gadgClone = (Gadget)session.get(Gadget.class, gadg.getId());

//do something with the clone

tran.commit();

但是,gadgClone为空。是因为它还没有被实施吗?在提交之前,有没有办法在session中访问它


共 (1) 个答案

  1. # 1 楼答案

    为什么不在持久化对象之前克隆它? 为什么在取消持久化后要克隆它

    无论如何,您是否尝试过从缓存加载对象?出于性能原因,如果对象驻留在缓存中,则不需要访问数据库

    Gadget savedGadg = (Gadget) session.load(Gadget.class, gadg.getId());
    

    此外,您可能需要在提交事务之前初始化对象(可能还有其字段)

    Hibernate.initialize(savedGadg);
    Hibernate.initialize(savedGadg.getCertainCollection());