2

在 Querydsl 4 Hibernate 中有 HibernateDeleteClause、HibernateUpdateClause。插入新记录呢?我尝试使用 HibernateUpdateClause,但它总是生成 HQL 更新 ==> SLQ 更新。

如何插入新记录?这是我的querydsl查询(删除+插入):

QUniDati uniDati = QUniDati.uniDati;
HibernateDeleteClause queryUniDatiDelete = uniDatiDao.delete(uniDati)
.where(uniDati.id.idDomanda.eq(idDomanda));
queryUniDatiDelete.execute();

QUniDati uniDati = new QUniDati(String.format("uniDati_%d",posizione));
HibernateUpdateClause queryUniDatiUpdate = uniDatiDao
.update(uniDati)
.set(uniDati.id.idDomanda, idDomanda)
.set(uniDati.id.pos, posizione++)
.set(uniDati.parametro, propName.toUpperCase())
.set(uniDati.valore, propVal.toString())
.where(uniDati.id.idDomanda.eq(idDomanda));
queryUniDatiUpdate.execute();
4

3 回答 3

1

Querydsl 仅支持 JPQL 支持的 DML 子句:UPDATE 和 DELETE。

对于插入,直接使用 Hibernate API。

于 2013-04-12T09:37:02.223 回答
0

你说的对! http://docs.jboss.org/hibernate/orm/4.1/devguide/en-US/html/ch11.html#d5e2610 为什么jpql没有插入而HQL有插入?

于 2013-04-18T15:59:48.070 回答
0

你可以使用 querydsl SQLInsertClause

https://bitbucket.org/atlassian/querydsl-examples/src

于 2018-12-06T21:31:58.647 回答