Hello forumers,
I have two entitiy classes sharing a composite ID class. I would now like to map a OneToOne association that associates entities with equal database identity (i.e. a natural join on the primary key columns). Moreover, I want hibernate to generate lazy loading proxies for associated entities (the association is not nullable in any direction). How do I annotate the entities to accomplish that?
The reference documentation explains how to do a natural join on primary keys, but only for non-composite ones.
The bare bones of my code:
Code:
@Embeddable
public class InkassoFallImpl extends CompositeIdBase implements InkassoFall {
@Column(name = "MI0100A")
@Type(type = "ch.bedag.a7i.neskobz.domain.hibernate.usertype.ZPVNummerType")
public ZPVNummer getZpvNummer() { }
@Column(name = "MI0114A")
@Type(type = "ch.bedag.a7i.neskobz.domain.hibernate.usertype.JahrType")
public Jahr getSteuerjahr() { }
@Column(name = "MI0104A")
@Type(type = "RegisterDef")
public Register getRegister() { }
@Column(name = "MI0160A")
@Type(type = "ch.bedag.a7i.neskobz.domain.hibernate.usertype.FallLaufnummerType")
public FallLaufnummer getFallLaufnummer() { }
}
Code:
@javax.persistence.Entity
@Table(name = "A7IY112")
@Proxy(proxyClass = Saldo.class)
public class SaldoImpl extends VersionedEntityLegacyBase implements Saldo, ValidatingEntity {
@javax.persistence.Id
public InkassoFallImpl getInkassoFall() { }
@OneToOne(targetEntity = InkassoAuftragImpl.class, fetch = FetchType.LAZY, optional = false)
public InkassoAuftrag getInkassoAuftrag() { }
}
Code:
@javax.persistence.Entity
@Table(name = "A7IY011")
@Proxy(proxyClass = InkassoAuftrag.class)
public class InkassoAuftragImpl extends VersionedEntityLegacyBase implements InkassoAuftrag, ValidatingEntity {
@javax.persistence.Id
public InkassoFallImpl getInkassoFall() { }
@OneToOne(targetEntity = SaldoImpl.class, fetch = FetchType.LAZY, //
optional = false)
public Saldo getSaldo() { }
}
How do I tell hibernate it's a natural join on the primary key?