I want to map a @OneToOne
association using Hibernate 5.3.10 and JPA.
I know that the parent side of a @OneToOne
association cannot be loaded lazily when not using bytecode enhancements.
In this case, I only want to map the client side and use @MapsId
association which is suggested here: Best way to map onetoone
Here is my mapping on the Client side.
The parent side CardEntity
has no mapping to the DeviceType
at all.
public class DeviceType {
@Id
@Column( name = "PRODUCT_CARD_TYPE_ID" )
private Long cardTypeId;
...
@OneToOne( fetch = FetchType.LAZY )
@MapsId
@JoinColumn( name = "PRODUCT_CARD_TYPE_ID" )
private CardEntity card;
....
}
I give it an extra @JoinColumn
because the KEY column in the CardEntity
has a different name than "PRODUCT_CARD_TYPE_ID"
.
See Change Id Column
For this mapping, LAZY
loading does not work. It always executes another statement to fetch the CardEntity
. What I am doing wrong here?
It looks like this is the HHH-12842. The described approach perfectly works in the hibernate 5.4. But it does not work in the hibernate 5.3 branch.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With