상속 및 ElasticsearchRepository에 약간의 문제가 있습니다. 내 코드 (짧은 버전) : 엔티티 :스프링 데이터 elasticsearch 상속 질문이 없습니다
public abstract class father{
@Id
protected String identifier;
// constructors
@Field(type= FieldType.String, index = FieldIndex.not_analyzed)
public String uri;
// getter setter
}
/*
* Stored in elastic search
*/
@Document(indexName = "entity1", type = "entity1")
public abstract class sonA extends father{
// constructors
}
/*
* Stored in elastic search
*/
@Document(indexName = "entity2", type = "entity2")
public abstract class sonB extends father{
// constructors
}
저장소 :
public interface DataBnfRepository extends
ElasticsearchRepository<SonA, String> {
public SonA findByUri(String uri);
@Query("{ \"filtered\":{ \"filter\":{\"term\":{\"uri\":\"?0\"}}}}")
public SonA findWithUri(String uri);
}
내 문제 : 나는 그들을 retreive하는 탄성 검색에 데이터를 넣어하지만 수 있어요. repository.findall()
을 사용하면 작동합니다. 나는 repository.findWithUri(uri)
을 할 경우 은 내가 exemples를 검색하려고 (널 결과) findByUri
에 대한 구문 분석 예외 작동하지 않습니다 https://github.com/spring-projects/spring-data-elasticsearch/blob/master/src/test/java/org/springframework/data/elasticsearch/entities/SampleInheritedEntity.java 을하지만 아무도 저장소가 없습니다.
내가 발견 한 것 : "foo"로 uri를 바꾸면 작동합니다. 바 => 구문 분석 예외 : 그래서 문제는
URI = foo는 함께 시험을 만들어 함께.
uri = "foo : bar"=> 구문 분석 예외.
uri = foo \ : bar => 구문 분석 예외.
URI = "foo는 \ 표시 줄"=> 구문 분석 예외가 나는 코드에 문제가 없었 상속되기 전에
. URI를 객체 repository.save(object)
과 repository.findWithUri(uri)
에 넣으면 객체가 생깁니다.
모든 도움/제안/의견을 보내 주시면 대단히 감사하겠습니다. 부디. 고마워요
현재 작동하지 않습니다. 오류가 있습니다 : No 속성 FatherUri가 SonA 유형으로 발견되었습니다. 그러나 도움을 주셔서 감사합니다, 나는이 가능한 해결책을 고대하고 있습니다, 어쩌면 그것을하는 속임수가 있습니다. –
오케이, 죄송합니다. 빠른 질문이지만, 'DataBnfEntity'는 무엇입니까? 소나와 어떻게 관련이 있니? 이것들은 같은가요? 그것들이 동일하다면, 왜 당신은 그것을 추상 클래스로 가지게되는 걸까요? 'DataBnfEntity'가 sonA의 부모라면,'findByDataBnfEntitySonAFatherUri (uri)'와 같이'DataBnfEntity'에서'Father'까지 트래버스해야합니다. – techtabu
죄송합니다. 이름도 잊어 버렸습니다. DataBnfEntity => SonA (RDF 데이터베이스에서 작업하지만 정보를 필터링 함) 질문을 편집했습니다. 죄송합니다. –