Java – JPA one-to-one relationship, where the entity may not exist

I have many to one mapping between two entities (A and B, and a B can be associated with many as). I need to be able to obtain the ID of B on a (a.b_id), where the specific B entity does not exist in the database Is that possible?

A (Simplified) example of our code:

@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;
    }

    // ...
}

This basic setting will eventually make hibernate try to create A.B_ ID holds a null value, which is not allowed:

Caused by: java.sql.BatchUpdateException: ORA-01400: cannot insert NULL into ("MY_SCHEMA"."A"."B_ID")

For clarity, I do not want an entity to be created if it does not already exist I just want to insert a without B in the database. There is no foreign key constraint between the two tables

Solution

I use the @ notfound annotation on the @ manytoone side to ensure that it does not cause any errors I haven't tried a two-way relationship yet

Note that this is not a hibernate specific comment!

Example:

@NotFound(action=NotFoundAction.IGNORE)
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>