HQL:将“插入...选择”组合起来具有固定参数值
我有 HQL 语句:
insert into Item (ost, value, comments, startTime, endTime, proposedBy)
select si.ost, si.value, si.comments, si.endTime, si.endTime, u
from Item si, User u
where si.ost = ? and u.id = ?
如何修改它以使用 ost
和 startTime
列的参数值,同时从 select
获取其他列?
I have HQL statement:
insert into Item (ost, value, comments, startTime, endTime, proposedBy)
select si.ost, si.value, si.comments, si.endTime, si.endTime, u
from Item si, User u
where si.ost = ? and u.id = ?
How could it be modified to use parameters' values for ost
and startTime
columns while taking other columns from select
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
HQL中无法完成;它不允许在 select 子句中引用参数。
Can’t be done in HQL; it doesn’t allow parameter references in the select clause.
我不知道最后一个答案。我正在使用 NH 3.2,并且能够让它工作。
在此示例中,我需要创建一个新的 EventFacility 对象。几乎包含您在这里看到的所有字段。事件实体有另一个实体,所有者挂在它上面。
I don't know about that last answer. I am using NH 3.2 and I was able to get this to work
In this example I needed to create a new EventFacility object. With pretty much all the fields you see here. The Event entity has another entity, Owner hanging off of it.
我们可以通过使用 setParameter 方法并参考HQL 和 JPQL 用户指南示例 6。
此外, ”?”由于旧式查询参数 (
?。 (为了更好的可读性和可维护性,即使您使用的是早期版本,也应该使用命名参数)
以下方法演示了上述更改:
We can do so by using setParameter method and refer to example 6 of HQL and JPQL User Guide.
In addition, "?" should be replaced by Named Parameter due to Legacy-style query parameters (
?
) are no longer supported after Hibernate 5.3. (For better readability and maintainability, Named Parameter should be used even if you are using earlier version)Following method demonstrates above changes: