Como corrigir "Não propriedade [repositoryMethod] encontrado para o tipo [entidade]!" quando eu estou usando um repositório de uma entidade herdou?

Raffa:

Eu estou tentando configurar um repositório Primavera de dados JPA para uma entidade que herda de outra entidade.

Eu estou usando Spring Bota 2.1.6 com a Primavera de dados JPA. Eu já pesquisou o problema e olhou para a documentação, mas os casos que eu encontrei, embora semelhante, nenhum mostrou muito bem como lidar com repositórios para as classes quando temos herança entidade.

Aqui eu tenho a classe principal:

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class Person implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;

    // Getters and setters omitted
}

E aqui a classe que herda de Pessoa:

@Entity
@PrimaryKeyJoinColumn(name="id")
public class Driver extends Person   {

    private String vehicleModel;

    // Getters and setters omitted
}

Então, eu criei um filtro para usar no repositório:

public class DriverFilter {

    private String vehicleModel;

    // Getters and setters omitted
}

Depois de ter criado os DriverQueries Interface:

public interface DriverQueries {

    public Page<Driver> filter(DriverFilter filter, Pageable pageable);

}

E então eu fiz a sua implementação:

public class DriverImpl implements DriverQueries {

    @Override
    public Page<Driver> filter(DriverFilter filter, Pageable pageable) {
        // code omitted
    }

}

I criar o repositório de base:

@NoRepositoryBean
public interface People<T extends Person> extends JpaRepository<T, Long> {
}

E, finalmente, criar o repositório para a classe herdada:

@Repository
public interface Drivers extends People<Driver>, DriverQueries {

}

Mas quando eu executar o programa, eu tenho a seguinte exceção:

Caused by: org.springframework.data.mapping.PropertyReferenceException: No property filter found for type Driver!
    at org.springframework.data.mapping.PropertyPath.<init>(PropertyPath.java:94)
    at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:382)
    at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:358)
    at org.springframework.data.mapping.PropertyPath.lambda$from$0(PropertyPath.java:311)
    at java.util.concurrent.ConcurrentMap.computeIfAbsent(ConcurrentMap.java:324)
    at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:293)
    at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:276)
    at org.springframework.data.repository.query.parser.Part.<init>(Part.java:81)
    at org.springframework.data.repository.query.parser.PartTree$OrPart.lambda$new$0(PartTree.java:250)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
    at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
    at org.springframework.data.repository.query.parser.PartTree$OrPart.<init>(PartTree.java:251)
    at org.springframework.data.repository.query.parser.PartTree$Predicate.lambda$new$0(PartTree.java:380)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
    at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
    at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
    at org.springframework.data.repository.query.parser.PartTree$Predicate.<init>(PartTree.java:381)
    at org.springframework.data.repository.query.parser.PartTree.<init>(PartTree.java:93)
    at org.springframework.data.jpa.repository.query.PartTreeJpaQuery.<init>(PartTreeJpaQuery.java:78)
    ... 103 common frames omitted

Se eu criar um repositório para uma classe normal, seguindo a mesma lógica que a anterior, tudo funciona perfeitamente.

Alguém sabe o que poderia estar errado?

Obrigado!

Serg Zenyuk:

Este erro desaparece se nós atribuídos à classe DriverImpl o nome correto por analogia com ele pais ( DriverQueries ) - DriverQueriesImpl . Neste caso, a classe herdada será chamado como o pai, mais o sufixo Impl .

A mola é rigoroso sobre este.

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=236391&siteId=1
Recomendado
Clasificación