使用@Formula的Hibernate实体的原生SQL查询会导致NullPointerException [英] Native SQL query for an Hibernate entity using @Formula results in NullPointerException
问题描述
@Id
我有一个简单的Hibernate实体,可以使用@Formula annuity私人长ID;
私人字符串名称;
@Formula((select count(f。*)from foo f where f.id = id))
private long bar;
当我尝试使用本机SQL查询加载实体时:
EM.createNativeQuery(SELECT f。*,count(something)as bar FROM foo f WHERE f.name ='...',Entity.class )
我得到一个NullPointerException:
java.lang.NullPointerException
at org.hibernate.loader.DefaultEntityAliases.intern(DefaultEntityAliases.java:193)
at org.hibernate.loader.DefaultEntityAliases.getSuffixedPropertyAliases( DefaultEntityAliases.java:151)
at org.hibernate.loader.DefaultEntityAliases.determinePropertyAliases(DefaultEntityAliases.java:93)
at org.hibernate.loader.DefaultEntityAliases。< init>(DefaultEntityAliases.java:65 )
at org.hibernate.loader.ColumnEntityAliases。< init>(ColumnEntityAliases.java:45)
at org.hibernate.loader.custom.sql.SQLQueryReturnProcessor.generateCustomReturns(SQLQueryReturnProcessor.java:197)
在org.hibernate.loader.custom.sql.SQLCust < init>(SQLCustomQuery.java:152)
at org.hibernate.engine.query.NativeSQLQueryPlan。< init>(NativeSQLQueryPlan.java:67)
at org.hibernate.engine。 $ or $ $ $ b $ or $ $ b $ or $ $ $ $ $ $ $ $ $ $ $ $ $ $
at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:179)
at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:236)
当我删除@Formula属性时,一切正常。
我发现这个错误报告: BugReport 。但对我来说,目前还不清楚如何解决我的问题。
的确,这似乎是 HHH-2225 ( HHH-2536 重复)。不幸的是,这个问题并没有解决,我担心你不得不使用HQL或者提交一个补丁(你可以先就这个问题进行投票,但是我不希望快速解决这个问题差不多四年旧)。
I've got an simple Hibernate entity for which I use the @Formula annotion:
@Id
private Long id;
private String name;
@Formula("(select count(f.*) from foo f where f.id = id)")
private long bar;
When I try to load an entity with a native SQL Query:
EM.createNativeQuery("SELECT f.*, count(something) as bar FROM foo f WHERE f.name = '...'", Entity.class)
I get an NullPointerException:
java.lang.NullPointerException
at org.hibernate.loader.DefaultEntityAliases.intern(DefaultEntityAliases.java:193)
at org.hibernate.loader.DefaultEntityAliases.getSuffixedPropertyAliases(DefaultEntityAliases.java:151)
at org.hibernate.loader.DefaultEntityAliases.determinePropertyAliases(DefaultEntityAliases.java:93)
at org.hibernate.loader.DefaultEntityAliases.<init>(DefaultEntityAliases.java:65)
at org.hibernate.loader.ColumnEntityAliases.<init>(ColumnEntityAliases.java:45)
at org.hibernate.loader.custom.sql.SQLQueryReturnProcessor.generateCustomReturns(SQLQueryReturnProcessor.java:197)
at org.hibernate.loader.custom.sql.SQLCustomQuery.<init>(SQLCustomQuery.java:152)
at org.hibernate.engine.query.NativeSQLQueryPlan.<init>(NativeSQLQueryPlan.java:67)
at org.hibernate.engine.query.QueryPlanCache.getNativeSQLQueryPlan(QueryPlanCache.java:140)
at org.hibernate.impl.AbstractSessionImpl.getNativeSQLQueryPlan(AbstractSessionImpl.java:160)
at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:165)
at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:179)
at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:236)
When I remove the @Formula attribute all works fine.
I found this bug report: BugReport. But for me it's not clear how to solve my problem.
Indeed, this seems to be the problem reported in HHH-2225 (that HHH-2536 duplicates). Unfortunately, the issue is not fixed and I'm afraid you'll have to either use HQL or submit a patch (you can start with voting on the issue but I wouldn't expect a fast resolution given that this issue is almost four years old).
这篇关于使用@Formula的Hibernate实体的原生SQL查询会导致NullPointerException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!