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?