Spring Data JPA:处理其他实体的继承属性

时间:2017-09-28 08:54:20

标签: java spring jpa kotlin

情况: (作为实体的类)

  • class1 属性 class2
  • subclass1 (继承自 class1 )为属性使用 subclass2 (继承自 class2
  • subclass2 有一个 property2 class2 没有

我如何在subclass1Repository中实现这一点:

findByProperty_property2(xx)

显然我发现“无属性”属性2“找到类型 class1 ,遍历路径: class2 .property2。

显然,JPA不知道属性的类型为 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>
}

1 个答案:

答案 0 :(得分:0)

您想映射subclass1subclass2吗?我对你的问题感到有点失落......但希望这对你有价值。

@Entity
public class Foo1 {
@Id
private int id; // primary key is great to have for map tables.
  @ManyToMany // or something 
  @JoinTables(...
  private List<Foo2> foo2;
}

@Entity
public class Foo2 {
  @Id
  private int id;
  @ManyToMany(mappedBy="foo2")
  private List<Foo1> foo1;

}

创建getter和setter。

foo2的存储库:

public interface Foo2Repository extends CrudRepository<Foo2, Long> {
    Foo2 findBySomeValue(Double doubleValue); 

您可以为方法创建@Service类:

@Service
public class FooService {
  @Autowired
  private Foo2Repository foo2Repository;

public List<Foo1> ListMyFoo(Double doubleValue) {
  return this.yourInterface.findBySomeValue(doubleValue).getFoo1();

}

它会回复你一个基于List的Foo2 SomeValue是真的。