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

标签 java hibernate jpa

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

A 继承自通用 Base 类。

@Entity
public class A extends Base<B> {

}

@Entity
public class B {

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

}

C;

@Entity
public class C extends Base<D> {

}

@Entity
public class D {

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

}

使用类;

@Entity
public class Base<T> {

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

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

最佳答案

重命名两个 @ManyToOne 带注释的 parent 字段如何?

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

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

那么你就可以拥有;

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

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

关于java - JPA - 如何对通用结构中的不同字段使用@OneToMany mappedBy 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57883007/

相关文章:

java - 如何使用 Spring 和 Hibernate 在 java 中加载 Facebook 属性文件

java - 动画两个固定点之间的平移 (Libgdx)

java - 在 Java 中使用 SQLITE_OPEN_NOMUTEX 标志打开数据库连接

java - Hibernate 使用条件删除

java - Web应用程序中的并发控制

java - 如何在 Java 中以 root 身份执行 shell 命令

java - hibernate 5.2.2 : ManyToOne first example

java - tomcat服务器上的outOfMemory java堆空间错误,没有出现在本地

java - Play Framework "find"(Finder) 结果缺少 OneToMany 关系数据

java - @Transactional spring JPA .save() 没有必要吗?