java – JPA一对一关系,其中实体可能不存在
发布时间:2020-12-14 19:32:42 所属栏目:Java 来源:网络整理
导读:我有两个实体之间的多对一映射(A和B,一个B可以与许多As相关联),我需要能够在A(A.B_ID)上获得B的ID,其中特定的B实体不存在于数据库中.这可能吗? 我们代码的一个(简化)示例: @Entity@Table(name = "A")public class A implements java.io.Serializable { //
我有两个实体之间的多对一映射(A和B,一个B可以与许多As相关联),我需要能够在A(A.B_ID)上获得B的ID,其中特定的B实体不存在于数据库中.这可能吗?
我们代码的一个(简化)示例: @Entity @Table(name = "A") public class A implements java.io.Serializable { // ... private B b; // ... @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "B_ID") public B getB() { return this.b; } // ... } @Entity @Table(name = "B") public class B implements java.io.Serializable { // ... private Set<A> as = new HashSet<A>( 0 ); // ... @OneToMany( fetch = FetchType.LAZY,mappedBy = "b" ) public Set<A> getAs() { return this.as; } // ... } 这个基本设置最终会让Hibernate试图为A.B_ID保存一个null值,而这是不允许的: Caused by: java.sql.BatchUpdateException: ORA-01400: cannot insert NULL into ("MY_SCHEMA"."A"."B_ID") 为了澄清,如果实体尚不存在,我不希望它被创建.我只想在数据库中插入没有B的A.两个表之间没有外键约束. 解决方法
我在@ManyToOne端使用@NotFound注释,以确保它不会导致任何错误.我还没有尝试双向关系.
请注意,这不是Hibernate特定的注释! 例: @NotFound(action=NotFoundAction.IGNORE) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |