2010-07-26 34 views
8

Tôi đã có một thực thể Hibernate đơn giản mà tôi sử dụng annotion @Formula:Native truy vấn SQL cho một thực thể Hibernate sử dụng kết quả @Formula trong NullPointerException

@Id 
private Long id; 

private String name; 

@Formula("(select count(f.*) from foo f where f.id = id)") 
private long bar; 

Khi tôi cố gắng tải một thực thể với một người gốc SQL Query:

EM.createNativeQuery("SELECT f.*, count(something) as bar FROM foo f WHERE f.name = '...'", Entity.class) 

tôi nhận được một 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) 

Khi tôi loại bỏ các attribu @Formula te tất cả các công trình tốt.

Tôi tìm thấy báo cáo lỗi này: BugReport. Nhưng đối với tôi nó không rõ ràng làm thế nào để giải quyết vấn đề của tôi.

Trả lời

3

Thật vậy, điều này có vẻ là sự cố được báo cáo trong HHH-2225 (rằng HHH-2536 bản sao). Thật không may, vấn đề không phải là cố định và tôi e rằng bạn sẽ phải sử dụng HQL hoặc gửi một bản vá (bạn có thể bắt đầu bỏ phiếu về vấn đề này nhưng tôi không mong đợi một giải pháp nhanh cho rằng vấn đề này gần bốn năm cũ).

+0

lỗi này đã bị đóng như cố định ngay bây giờ. Tôi vẫn nhận được một NPE khó khăn ... –

Các vấn đề liên quan