2014-09-22 64 views
2

我试图创建一个与与其他实体的主键另一个实体的连接列一个实体B。当我创建,是不是在实体A,我没有看到异常值的实体B。 JPA应该不会自动处理这个问题吗?创作JPA实体具有joinColumn

实体的代码片段:

@Entity 
    public class A{ 

     @Id 
     @Column(name="ORIGIN_ID") 
     private long id; 
     ... 

     @OneToMany(mappedBy="aBean",cascade = CascadeType.PERSIST) 
     private List<B> bList; 
    } 


    @Entity 
    public class B{ 
     @Id 
     private long id; 
     ... 

     @ManyToOne(cascade=CascadeType.MERGE) 
     @JoinColumn(name="ORIGIN_ID") 
     private A aBean; 
    } 
+1

请将代码片段粘贴到你如何“创建”实体B. – zbig 2014-09-22 07:47:15

+0

对于创建,使用传递的ID,我得到实体A的bean,然后将该bean设置为实体B的aBean对象。现在,我是在将bean对象设置为上述问题的解决方案时添加空检查 – 2014-09-22 09:11:41

回答

0

你指的是关系的管理。没有什么在JPA规范,我还记得,需要一个异常被抛出存在(因为用户在不一致的相关信息传递)。所有JPA实现都将自己处理这种情况。有些只会坚持关系的所有者一方。其他人将坚持基于首先遇到的情况。其他人有可选的处理,可以打开检测这些东西,并将它们标记给用户

最简单的建议是使用双向关系时,确保双方都一致。

+0

谢谢。这种情况是一些负面情景测试的一部分。只是想检查是否有一些解决方案 – 2014-09-22 09:13:03