阻止Hibernate使用select子句中谓词的列

时间:2014-09-16 15:50:05

标签: hibernate hql

由于性能限制,我们必须优化数据库操作和带宽。像from Users u where u.id = ?这样的简单Hibernate HQL查询会生成一个SQL语句,例如:

SELECT u.id, u.name FROM USERS u where u.id = ?

Hibernate在select子句中重复了一个字段(u.id),它已经存在于谓词(u.id =?)中,这是非常愚蠢的。有没有人知道一种直接的方法来阻止这种情况,以便查询结束:

SELECT u.name FROM USERS u where u.id = ?

谢谢!

1 个答案:

答案 0 :(得分:0)

为您的HQL添加一个select子句。您的陈述是

的同义词
select u.* FROM Users u where u.id = :id

如果指定投影,Hibernate将使用它。

select u.name from Users u where u.id = :id