【发布时间】:2017-09-28 08:54:19
【问题描述】:
情况: (类是实体)
- class1 具有 属性 类型为 class2
- subclass1(继承自 class1)将类型 subclass2(继承自 class2)用于 property
- subclass2 有一个 property2,而 class2 没有
如何在 subclass1Repository 中实现这一点:
findByProperty_property2(xx)
显然我得到“找不到类型 class1 的属性“property2”,遍历路径:class2.property2。
显然 JPA 不知道 property 属于 subclass2 类型。
@Entity
open class Class1 constructor(
@ManyToOne property: Class2
)
@Entity
open class Class 2 constructor() {
}
@Entity
open class subclass1 constructor(
property: Subclass2
):Class1(property = property)
@Entity
open class subclass2 constructor(
property2: Double
):Class2(..)
interface subclass1Repository: JpaRepository<Subclass1, Long>{
fun findByProperty_property2(prop2:Double): List<Subclass1>
}
【问题讨论】:
-
不要描述你的代码。发表它。 Java 中没有覆盖属性这样的东西。只有方法可以被覆盖。
-
你使用泛型类型而不是覆盖吗?
-
@JBNizet:已发布(虽然是 Kotlin)
-
@Al1:我没有,我不知道这里怎么做
-
使用 JPA 规范 (download.oracle.com/otndocs/jcp/persistence-2_1-fr-eval-spec/…) 中描述的 TREAT JPQL 运算符。规格示例:
SELECT b.name, b.ISBN FROM Order o JOIN TREAT(o.product AS Book) b