Please, consider the following example:
import org.hibernate.annotations.NaturalId;
import javax.persistence.Column;
import javax.persistence.Table;
@javax.persistence.Entity
@Table(name = "Entity", uniqueConstraints = {
@javax.persistence.UniqueConstraint(columnNames = {"firstNaturalId"}),
@javax.persistence.UniqueConstraint(columnNames = {"secondNaturalIdPart1", "secondNaturalIdPart2"})
})
class Entity {
@NaturalId
@Column(name = "firstNaturalId")
private String firstNaturalId;
@NaturalId
@Column(name = "secondNaturalIdPart1")
private String secondNaturalIdPart1;
@NaturalId
@Column(name = "secondNaturalIdPart2")
private String secondNaturalIdPart2;
// The remainder is omitted.
}
The desired functionality is to be able to retrieve an identified uniquely entity either by providing ('firstNaturalId'
) or the ('secondNaturalIdPart1', 'secondNaturalIdPart2'
) group.
Is it possible in Hibernate to have several natural identifiers combinations (groups) that uniquely identify an entity within a table?