Spring数据存储库投影findByEntity

时间:2017-11-06 23:20:53

标签: java hibernate repository spring-data-jpa jpql

这是JPA实体MyEntity。

Entity
class MyEntity{
    private Integer id;    
    private Date date;    
    private Double montant;

    @ManyToOne(fetch = FetchType.LAZY)
    private User creator;
}


    class User {
        private Integer id;    
        private String name;    
        private String image;           
        private Integer age;

        private String anotherField;
    }

我想检索一个MyEntity列表,其中包含其创建者的一些属性(只是id,名称及其图像)。 所以我创建了一个Projection界面。

interface Projection{
    public Integer getId();
    public Date getDate();
    public Double getMontant();
    public User getCreator();

    interface User {
        public Integer getId();
        public String getName();
        public String getImage();
    }
}

这里是JPA存储库实现:

public interface CommandeRepository extends JpaRepository<EbCommande, Integer> {

    <T> Collection<T> findById(Integer id, Class<T> type);
    <T> Collection<T> findByCreator(User client, Class<T> type);

}

我希望第一个查询正常工作。

另一方面,对于第二个,当我循环返回MyEntity列表时,对User属性的每次访问都会触发对数据库的请求,以获取用户的所有属性。

我不明白JPA预测是如何运作的。

请帮忙!

0 个答案:

没有答案