当前位置: 首页 > 知识库问答 >
问题:

如何使用spring数据JPA的投影和规范?

孟光耀
2023-03-14

我不能同时使用Spring Data,JPA投影和规范。我有以下设置:

实体:

@Entity
public class Country {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Column(name = "NAME", nullable = false)
    private String name;

    @Column(name = "CODE", nullable = false)
    private String code;

    ---getters & setters---

}

投影界面:

public interface CountryProjection {
    String getName();
}

国家规格:

public class CountrySpecification {
    public static Specification<Country> predicateName(final String name) {
        return new Specification<Country>() {
            @Override
            public Predicate toPredicate(Root<Country> eventRoot, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
                return criteriaBuilder.equal(eventRoot.get(Country_.name), name);
            }
        };
    }
}

存储库:

public interface CountryRepository extends JpaRepository<Country, Long>, JpaSpecificationExecutor<Country> {
    List<CountryProjection> findByName(String name); // works fine
    List<CountryProjection> findAllProjectedBy(); // works fine
    List<CountryProjection> findAllProjectedBy(Specification<Country> specification); //throws Exception as shown below
}

前两个方法findByName和findAllProjectedBy工作良好。而第三个方法findAllProjectedBy(Specification Specification)抛出以下异常-

如何才能做到这一点呢?有什么想法吗?

共有1个答案

蔡宏大
2023-03-14

还不支持混合预测和规格的能力。有个窃听器在跟踪这个。

 类似资料:
  • 我使用spring jpa规范动态构建实体查询。 它工作完美,但是查询返回所有实体字段,这使得性能变慢。我只想获取特定的实体字段,而不是获取我不想要也不会使用的所有实体字段和依赖项。 我在网上搜索,尝试了一些场景,但没有任何不足。有人能就此提出任何解决方案吗? 提前感谢 这是我的。我正在使用spring boot 2.2.4 规格: 存储库: 音乐会服务: ConcertServiceImpl:

  • 我试图从spring数据jpa-native查询返回自定义对象 以下是我到目前为止根据这个如何从Spring Data JPA GROUP BY查询返回自定义对象所做的工作 我应该能够创建如下查询: 我声明投影接口 那就叫它吧 不过我有个例外 javax。坚持不懈PersistenceException:org。冬眠MappingException:未知实体:javax。坚持不懈元组 知道我做错了

  • 我有这些实体-项目 和- 我需要运行此sql查询: 我在ItemRepository中使用了这个[1],但性能不好。它正在检索项目和类别中的所有字段(包括我不需要的与类别的联接)。 [1] 我正在尝试使用命名查询和投影来提高性能,但我似乎一事无成。我一直遇到-<代码>验证失败,无法查询方法公共抽象java。util。列出findByItemSet(长)。我尝试创建一个DTO类和一个接口来做同样的事

  • 我有一个关于嵌套列表投影界面用法的问题。我有两个实体(父和子)(它们有单向关联) 父级=> 子=> 我有两个选择特定列投影界面。 这个查询可以工作,但是它选择ChildEntity的所有列,并且只将id、name propeties映射到ChildProjection。(生成的查询选择所有列,但我想只选择id和name列) 我如何只选择id和name列(为嵌套列表投影界面选择特定列)并映射到Chi

  • 问题内容: 我需要像下面这样转换一个Hibernate条件查询 但是在JPA(2)中,我不知道如何实现投影-在这种情况下-是总和。奇怪的是,Hibernate和JPA(甚至是Hibernate JPA 2)具有如此巨大的差异,尤其是在条件查询中。 我开始 但是不知道如何在这里实现投影,也没有别名 问题答案: 这是一个老问题,但让我们举个例子: 使用Hibernate,与Hibernate不同,您总