我有一个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;
}
我想通过SET
Hibernate Update 语句中的属性更新集合。查询如下
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();
我不想更新父实体(证书),因为我没有在对象中填写的有关对象的所有信息。我只恢复所需的信息,具体取决于我在我的应用程序中的位置。所以certificadoDAO.update(certificado)
不是解决方案。
我不想映射JOIN_TABLE (CERTIFICADO_PAIS)
做一个@OneToMany - JOIN TABLE
- @ManyToOne
SQL 查询是解决方案吗?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 ':'