我试图在基于JPA的应用程序中为某些报告目的触发hql。 我尝试的以下查询在启动时保持conking(因为我将它作为NamedQuery提供,在启动时检查了它的语法)。
查询不正确:
SELECT t FROM Table_1 tb1
INNER JOIN
Table_2 tb2
where tb1.name = 'someName';
经过大量的排列和组合(以及挖掘查询的其他部分,我之前怀疑),我意识到问题出现在“ t ”中。而不是上面的查询,正确的查询应该是......
SELECT tb1 FROM Table_1 tb1
INNER JOIN
Table_2 tb2
where tb1.name = 'someName';
请注意,HQL期望 tb1 与表格短名称“ tb1 ”相同
tableName shortform和选择不匹配只会导致我遇到的问题。令人惊讶的是,hibernate / JPA不会在堆栈中出现错误,但部署会继续运行,我需要最终杀死java进程以摆脱它。
希望这有助于某人。
如果有人也可以推理这种行为,那就太好了。
谢谢!
答案 0 :(得分:0)
我不确定是否理解这个问题,但是如果您认为Hibernate应该在NamedQuery
创建时报告(或不是)语法错误EntityManagerFactory
的方式进行改进,那么您应该创建一个问题。我不认为它会得到高度重视。
答案 1 :(得分:0)
处理此类语句的最佳方法是将“变量”放在SELECT子句中与表Alias相同的实践。 那不是
"SELECT t from Table_1 T1"
制作像
这样的声明"SELECT T1 from Table_1 T1"
希望将来帮助某人。