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
にこのラインを持っている