No tengo puntos de reputación para comentar, así que pondré aquí mis comentarios:
¿Por qué el campo installationPK no está en installation.class? Deberías poner @EmbeddedId
en el campo installationPK en Installation.class.
No sé si hace diferencias, pero pongo joinCollums en el campo en BaseEntity
:
@OneToOne
@JoinColumns({
@JoinColumn(name = "site", referencedColumnName = "site"),
@JoinColumn(name = "structure", referencedColumnName = "structure")
})
private Installation installation;