JPQL中具有类型列表属性的投影

时间:2018-07-27 13:08:48

标签: java spring-data-jpa jpql

如何在JPQL上选择类型列表的属性? 示例:

@Entity
public class Person {

    @id
    private Long id;
    private String name;
    private String lastname;
    private String birthdate;
    @OneToMany
    private List<Phone> getPhones();

    ...
}

@Entity
public class Phone {

    @id
    private Long id;
    private String number;

    ...
}

在存储库中,我需要一个投影,所以:

public interface IPersonProjection {

    Long getId();
    String getName();
    List<Phone> phones();
}




@Repository
public interface IAtendimentoRepository extends JpaRepository<Atendimento, Long> {

    @Query("SELECT P.id, P.name, P.phones FROM Person P ")
    List<IPersonProjection> findAllProjected();
}

但是当我尝试执行此操作(SELECT P.id,P.name,P.phone FROM Person P)时,SQL语法错误。

1 个答案:

答案 0 :(得分:0)

Spring Data Docs中所指定,您应该在Projection Interface中具有属性的访问器。因此,我认为您应该将phones的{​​{1}}方法的名称更改为IPersonProjection