【问题标题】:How to set uniqueness level to my JPA entities using Hibernate?如何使用 Hibernate 为我的 JPA 实体设置唯一性级别?
【发布时间】:2012-11-12 09:30:16
【问题描述】:

假设我有 2 个 JPA 实体:

@Entity
public class OwnerEntity {

    private List<OwnedEntity> subEntities

    // ...
}

@Entity
public class OwnedEntity {

    private String quasiUniqueSid;

    private OwnerEntity ownerEntity

    // ...
}

如您所见,它们具有多对一关系:OwnerEntity 可以有多个 OwnedEntitys。

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

【问题讨论】:

    标签: java hibernate jpa unique


    【解决方案1】:

    看来你需要一个复合键,像这样:

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

    您可以找到完整的文档here

    如果你想明确定义 ownerEntity 的列名,你可以使用:

    @JoinColumn(name="ownerEntity_id")
    

    【讨论】:

      猜你喜欢
      • 2021-03-20
      • 2016-07-25
      • 2010-10-31
      • 2022-07-20
      • 1970-01-01
      • 1970-01-01
      • 2011-03-07
      • 2013-09-02
      • 1970-01-01
      相关资源
      最近更新 更多