HIbernate仅使用id持久化对象

时间:2015-09-18 22:40:51

标签: java hibernate

我有以下实体:

ComprobantePago cp = new ComprobantePago();
cp.setSerie("0001");
SocioNegocio emisor = new SocioNegocio();
emisor.setId(2);
Usuario usuario = new Usuario();
usuario.seId(10);
cp.setEmisor(emisor);
cp.setUsuario(usuario);
//persist the object
comprobantePagoDAO.crearComprobantePago(cp);

我想以下列方式持久保存ComprobantePago对象:

public class ComprobantePagoDAOImpl implements ComprobantePagoDAO {

private SessionFactory sessionFactory;

@Override
public void crearComprobantePago(ComprobantePago comprobante) {
    sessionFactory.getCurrentSession().save(comprobante);
}
....
}

如果usuario(10)和emisor(2)的id在各个实体中持续存在,我就是这样做的,因为我只有实体的id。

在另一个类中,我有持久化实体的方法

hasOne

感谢所有人。

1 个答案:

答案 0 :(得分:1)

当您真正想要做的是将新实体与数据库中存在的持久性托管实体相关联时,不要创建仅具有ID的新的分离实体。

使用EntityManager.getReference()代替从其ID获取持久的托管实体。或者它在Hibernate API中的等价物:Session.load()