Hibernate更新@ManyToMany集合

时间:2015-10-16 07:25:36

标签: java hibernate many-to-many update-statement

我是JOIN TABLE映射的@ManyToMany关系

@ManyToMany(fetch = FetchType.LAZY)
    @JoinTable(name = "CERTIFICADO_PAIS", joinColumns = { @JoinColumn(name = "CERTIFICADO_ID", referencedColumnName = "ID") }, inverseJoinColumns = { @JoinColumn(name = "PAIS_ID", referencedColumnName = "ID") })
    public List<PaisDTO> getPaisDTOs() {
        return this.paisDTOs;
    }

我想在Hibernate Update语句中通过SET属性更新集合。 查询如下

String hql= "UPDATE CertificadoDTO certificado SET " +
                "certificado.paisDTOs = :paisDTOs " +
                "WHERE certificado.id = :idCertificado ";

Query q = sessionFactory.getCurrentSession().createQuery(hql);
q.setParameterList("paisDTOs", certificadoDTO.getPaisDTOs());
q.setParameter("idCertificado", certificadoDTO.getId());
q.executeUpdate();

我不想更新父实体(certificado),因为我没有关于对象中填充的对象的所有信息。我只恢复所需的信息,这取决于我在我的应用程序中的位置。 所以certificadoDAO.update(certificado)不是解决方案。

我不想映射JOIN_TABLE (CERTIFICADO_PAIS)做一个 @OneToMany - JOIN TABLE - @ManyToOne

SQL查询是解决方案吗?是否可以在最新版本的hibernate中更新集合SETTING属性?

我无法获得有关此信息。

谢谢!

有条件的信息

hql.ast.QueryTranslatorImpl  - parse() - HQL: UPDATE es.aemps.certificados.dto.CertificadoDTO certificado SET certificado.paisDTOs = :paisDTOs0_, :paisDTOs1_ WHERE certificado.id = :idCertificado 

错误消息

hibernate.hql.PARSER  - line 1:101: expecting IDENT, found ':'

0 个答案:

没有答案