gpt4 book ai didi

java - Hibernate:使用带有命名参数的选择插入实体

转载 作者:行者123 更新时间:2023-11-30 07:04:14 25 4
gpt4 key购买 nike

我有一个非常具体的问题,我必须做类似的事情(在 HQL 中):

insert into EntityA(field1, field2, field3, field4, field5)
select
:paramForField1,
:paramForField2,
:paramForField3,
:paramForField4,
:paramForField5
from
EntityB
where
...

使用 Query.setParameter(String, Object) ( JavaDoc ) 传递参数,它们是字符串、字符串、字符串、日期和枚举。

虽然参数数量是正确的(五个字段的五个参数),但 Hibernate 不断引发以下异常:

...
Caused by: org.hibernate.QueryException: number of select types did not match those for insert [insert into ...]
at org.hibernate.hql.ast.tree.IntoClause.validateTypes(IntoClause.java:116)
at org.hibernate.hql.ast.tree.InsertStatement.validate(InsertStatement.java:57)
at org.hibernate.hql.ast.HqlSqlWalker.postProcessInsert(HqlSqlWalker.java:701)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.insertStatement(HqlSqlBaseWalker.java:513)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:255)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:254)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:185)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:101)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:94)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1651)
...

我正在使用 Hibernate 3.3.2 GA。

提前致谢。

最佳答案

从 hibernate 4.3 开始,这是可能的。 hibernate 4.3之前的版本不支持select子句中的参数。

关于java - Hibernate:使用带有命名参数的选择插入实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27787923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com