Spring Jpa继承类型联接选择仅基类

时间:2018-10-17 18:28:58

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

我仅选择基类时遇到问题,无法为此找到解决方案。 我也总是获得子类,而不仅仅是基类。

考虑到我有基类

@Entity
@Inheritance(strategy = InheritanceType.JOINED)   
public class BaseClass {
  @Id
  @GeneratedValue
  private Long id;
  private Date date;
  // some fields
}

现在我继承了

@Entity  
public class SubClassA extends BaseClass {
  // some fields
}
interface BaseClassRep extends JpaRepository<BaseClass,Long>{
  @Query(nativeQuery = true, value = "select id,date from baseclass where date = ?1")
  public BaseClass getByDate(Date date)
}

问题在于,BaseClassRep不仅返回BaseClass,而且还返回SubClassA以及从BaseClass继承的所有其他子类。

如何告诉Hibernate我真的只想要基类而不想要子类。

2 个答案:

答案 0 :(得分:0)

您可以使用类型运算符。 请查看以下链接

How do I query for only superclass entities in a jpql query?

或(Java /JPA | Query with specified inherited type

select id,date from baseclass b where date = ?1 and b.class = ?2

答案 1 :(得分:0)

我认为您必须使用TABLE_PER_CLASS继承类型:

@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) ,然后为超类创建一个存储库,然后获取数据。