我仅选择基类时遇到问题,无法为此找到解决方案。 我也总是获得子类,而不仅仅是基类。
考虑到我有基类
@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我真的只想要基类而不想要子类。
答案 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)
,然后为超类创建一个存储库,然后获取数据。