Нямам добра репутация, за да коментирам, така че ще поставя коментарите си тук:
Защо полето instalationPK не е в installation.class?? Трябва да поставите @EmbeddedId
в полето installationPK в Installation.class.
Не правя разлика, но поставям joinCollums в полето в BaseEntity
:
@OneToOne
@JoinColumns({
@JoinColumn(name = "site", referencedColumnName = "site"),
@JoinColumn(name = "structure", referencedColumnName = "structure")
})
private Installation installation;