0

假设我有 2 个 JPA 实体:

@Entity
public class OwnerEntity {

    private List<OwnedEntity> subEntities

    // ...
}

@Entity
public class OwnedEntity {

    private String quasiUniqueSid;

    private OwnerEntity ownerEntity

    // ...
}

如您所见,它们具有多对一的关系:anOwnerEntity可以有许多OwnedEntitys。

我想要实现的是OwnedEntity根据其所有者为每个分配一个唯一的 sid。因此,我可以拥有例如 2 个拥有相同的实体,quasiUniqueSid但它们不能拥有相同的所有者。Hibernate 有针对此类问题的一些内置功能吗?我记得其他可以做到这一点的 ORM(与 Java 无关)因此是我的问题。我正在使用最新的 Hibernate 版本(4.1.8)

4

1 回答 1

0

看来您需要一个复合键,如下所示:

@Entity
@Table(uniqueConstraints=@UniqueConstraint(columnNames={"quasiUniqueSid","ownerEntity_id"}), name="myUniqueConstraint")
public class OwnedEntity {
    ...
    String quasiUniqueSid;
    @ManyToOne
    OwnerEntity ownerEntity;
    ...
}

您可以在此处找到完整的文档。

如果要显式定义 ownerEntity 的列名,可以使用:

@JoinColumn(name="ownerEntity_id")
于 2012-11-12T09:38:32.377 回答