JPA - 如何对通用结构中的不同字段使用@OneToManymappedBy属性?

Erd*_*mir 6 java hibernate jpa

我有两个相关的实体对象。

A继承自泛型Base类。

@Entity
public class A extends Base<B> {

}

@Entity
public class B {

    @ManyToOne(cascade = CascadeType.ALL)
    private A a;

}
Run Code Online (Sandbox Code Playgroud)

类相似C

@Entity
public class C extends Base<D> {

}

@Entity
public class D {

    @ManyToOne(cascade = CascadeType.ALL)
    private C c;

}
Run Code Online (Sandbox Code Playgroud)

Base类;

@Entity
public class Base<T> {

    @OneToMany(mappedBy = "{both a & c here?}", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    Set<T> set;
}
Run Code Online (Sandbox Code Playgroud)

如何使支持mappedBy上的属性具有Base两个不同的值?

bur*_*ete 5

@ManyToOne将两个带注释的字段重命名为同名怎么样?

@ManyToOne(cascade = CascadeType.ALL)
private A parent;
Run Code Online (Sandbox Code Playgroud)

@ManyToOne(cascade = CascadeType.ALL)
private C parent;
Run Code Online (Sandbox Code Playgroud)

那么你就可以拥有;

@OneToMany(mappedBy = "parent", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
Set<T> set;
Run Code Online (Sandbox Code Playgroud)

因为您不能将非常量值作为注释参数传递。