【问题标题】:Projection in JPQL with property of type listJPQL 中具有类型列表属性的投影
【发布时间】:2019-01-04 14:53:09
【问题描述】:

如何在 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.phones FROM Person P) 时,SQL 的语法出现错误。

【问题讨论】:

  • 你的代码在哪里?

标签: java spring-data-jpa jpql


【解决方案1】:

Spring Data Docs 中所述,您的Projection Interface 中应该有您的属性的访问器。所以我认为你应该将IPersonProjectionphones方法的名称更改为getPhones

【讨论】:

  • 哦,我写错了代码。但是我已经更改了代码。但是,它仍然是同样的错误。在控制台上显示 sql mysql 存在错误,当我删除 P.phones 时它可以工作。
猜你喜欢
  • 2019-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多