【问题标题】:Spring-data : How to query a subtype using a specificationSpring-data:如何使用规范查询子类型
【发布时间】:2013-12-03 12:01:26
【问题描述】:

我有三个这样的实体:

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "TYPE")
public abstract class A
{
    // fields, getters, setters
}

@Entity
@DiscriminatorValue("B")
public class B extends A
{
    // fields, getters, setters
}

@Entity
@DiscriminatorValue("C")
public class C extends A
{
    // fields, getters, setters
}

我也有一个这样的存储库:

@Repository
public interface ADao extends JpaRepository<A, Long>, JpaSpecificationExecutor<A> 
{
}

在这个存储库上,我有一个方法

List<A> findAll(Specification<A> s)

在 JpaSpecificationExecutor 中定义。

我的问题是: 如何使用规范对仅在 B 中声明的字段提出请求?

提前致谢, 杰罗姆

【问题讨论】:

  • 你的意思是我应该参数化DAO接口?像这样:公共接口 DAO extends JpaRepository, JpaSpecificationExecutor ??
  • 是的(虽然我不确定 Spring Data JPA 会如何表现)。
  • 不幸的是这不起作用...... Spring告诉我它不能“根据路径解析属性”。
  • 请更新您的问题并发布您收到的消息/堆栈跟踪(包括更新的代码)。

标签: spring jpa spring-data spring-data-jpa


【解决方案1】:

创建一个

@Repository public interface BDao extends ADao<B>{}

public interface ADao extends JpaRepository<T extends A, Long>, JpaSpecificationExecutor<A> 

然后注入BDao查询B类型

【讨论】:

    猜你喜欢
    • 2014-05-18
    • 1970-01-01
    • 2017-10-25
    • 2018-07-22
    • 1970-01-01
    • 2020-06-05
    • 2015-06-03
    • 2019-09-28
    • 2016-11-05
    相关资源
    最近更新 更多