I think I have found another corner case on the 
https://hibernate.atlassian.net/browse/HHH-9798 regression.

 

The cited example is:

 

@OneToOne(fetch = FetchType.LAZY)

    @JoinTable(

        name = "ITEM_SHIPMENT", // Required!

        joinColumns =

            @JoinColumn(name = "SHIPMENT_ID"),  // Defaults to ID

        inverseJoinColumns =

            @JoinColumn(name = "ITEM_ID",  // Defaults to AUCTION_ID

                        nullable = false,

                        unique = true)

    )

    protected Item auction;

 

 

but an equally similar case ought to be:

 

@OneToOne(fetch = FetchType.LAZY)

    @JoinTable(

        name = "ITEM_SHIPMENT", // Required!

    )

    protected Item auction;

 

The rationale here is that a @JoinTable is used to “not have the null rows” 
that would be present if a @JoinColumn was to be used on an 
@OneToOne(optional=true). I cannot find in the spec where this is implied, 
required, or excluded.

 

Otherwise one would have to say:

 

@OneToOne(fetch = FetchType.LAZY)

    @JoinTable(

        name = "ITEM_SHIPMENT", // Required!

        inverseJoinColumns =

            @JoinColumn(nullable = false,

                        unique = true)

    )

    protected Item auction;

 

Thoughts?

 

-Jason

 

_______________________________________________
hibernate-dev mailing list
hibernate-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev

Reply via email to