我正在尝试构建 JPA 应用程序。我基本上有
@Entity
public class Folder {
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private int id;
private String description;
private String name;
@OneToMany(mappedBy = "parent", cascade = CascadeType.PERSIST)
private List<AbstractItem> items = new LinkedList<AbstractItem>();
@OneToMany(mappedBy = "parent", cascade = CascadeType.PERSIST)
private List<AbstractItem> items2 = new LinkedList<AbstractItem>();
.
.
.
}
我可以成功地将一个项目添加到 item
列表中,并保存它。但是,如果我再次加载它,持久化项的相同对象将出现在列表 items
和 items2
中。
我试图通过添加一个 @JoinTable
注释来解决这个问题,但我无法让它工作。
有什么建议吗?
最佳答案
对于每种情况,您应该在 AbstractItem 中有两个对“文件夹”的引用。因此,应该相应地指定 mappedBy 值,例如:
@OneToMany(mappedBy = "parent", cascade = CascadeType.PERSIST)
private List<AbstractItem> items = new LinkedList<AbstractItem>();
@OneToMany(mappedBy = "parent2", cascade = CascadeType.PERSIST)
private List<AbstractItem> items2 = new LinkedList<AbstractItem>();
关于java - JPA 对同一实体的多个 OneToMany 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15023883/