2016-03-24 5 views
0

名前付き問合せをアプリケーション外に格納しようとしています。これまでに読んだことはすべて、orm.xmlに問合せを入れることです。だから私はそれをしました:orm.xmlで名前付き問合せを使用すると、エラーが発生します。エンティティに識別子が指定されていません。

<?xml version="1.0" encoding="UTF-8"?> 
... 
    <entity class="com.blah.mapdb.repository.ResultRepository"> 
     <table name="ResultRepository.getMapForTarget" /> 
     <named-query name="getMapForTarget"> 
     <query> 
       <![CDATA[ 
       Big giant query goes here 
       </query> 
     </named-query> 
    </entity> 
    </entity-mappings> 

しかし、私は私のアプリケーションを起動しようとすると、エラーが発生します。スタックトレースを掘りすることは私に、このエラーを与える:

Caused by: org.hibernate.AnnotationException: No identifier specified for entity: com.blah.mapdb.repository.ResultRepository 

は、ここに私のリポジトリクラスです:

package com.blah.mapdb.model; 
import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.Id; 


@Entity 
public class Result { 

    @Id 
    private int id; 
... 
} 

明らかに結果クラス:

package com.blah.mapdb.repository; 
import java.util.List; 

import org.springframework.data.jpa.repository.Query; 
import org.springframework.data.repository.CrudRepository; 
import org.springframework.data.repository.query.Param; 

import com.blah.mapdb.model.*; 

public interface ResultRepository extends CrudRepository<Result, Long> { 
     @Query(name="getMapForTarget",nativeQuery=true) 
    List<Result> getMapForTarget (@Param("p1") String d, @Param("p2") String t, @Param("p3") String c); 
... 
} 

そしてここでは、結果のクラスの関連するビットですIdが定義されています。 ResultRepositoryクラスにクエリを含めると、すべて正常に動作します。なぜ私はResultRepositoryクラスについてそのエラーが出ているのか分かりません。私はここで何が欠けていますか?あなたのorm.xmlにこのラインを持っている

答えて

0

<entity class="com.blah.mapdb.repository.ResultRepository"> 

これは誤っていると思われる、あなたの代わりに

<entity class="com.blah.mapdb.model.Result"> 

を持つ必要があります。また、テーブル名の定義が間違っている可能性がありますので、Resultエンティティがマップされている実際のテーブル名を指定する必要があります。

関連する問題