2013-08-06 8 views
6

Hibernateバージョン4.2.3.Finalでサポートされている型安全なネイティブの名前付きクエリはありますか?Hibernateで型付きネームドネイティブクエリ

java.lang.ArrayIndexOutOfBoundsException: 0 
    at org.hibernate.ejb.AbstractEntityManagerImpl.createNamedQuery(AbstractEntityManagerImpl.java:637) 
    at sun.reflect.GeneratedMethodAccessor23.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:241) 
    at $Proxy78.createNamedQuery(Unknown Source) 

このクエリをクエリクラスで実行すると、すべてが正常です。 TypedQueryがここで問題と思われ、例外はそれほど役に立ちません。非常に複雑なクエリに対する単純なクエリでこれを試してみました。名前付きネイティブクエリに対してクエリを使用しない限り、すべてが失敗するようです。

答えて

8

SqlResultSetMappingを指定すると、このエラーを取り除くことができます。たとえば :Hibernateは値ネイティブクエリが返すに対処する方法を知っている

@javax.persistence.Entity 
@javax.persistence.SqlResultSetMapping(
    name = "implicit", entities = 
    @javax.persistence.EntityResult(entityClass = Account.class) 
) 
@javax.persistence.NamedNativeQuery(
     name = "findAccount", 
     query = "SELECT a.* FROM account a WHERE a.account_id=?1", 
     resultSetMapping = "implicit") 
public class Account implements java.io.Serializable { 
    [...] 
} 

この方法です。

0

ハードコードされたHQLクエリをコードからマッピングファイルに移動したときにこの問題が発生しましたが、間違ってaの代わりに要素に入れました。

はい、それは非常に有用なメッセージではありません。

関連する問題