0

2 つの JPA エンティティがあるとします。

@Entity
public class OwnerEntity {

    private List<OwnedEntity> subEntities

    // ...
}

@Entity
public class OwnedEntity {

    private String quasiUniqueSid;

    private OwnerEntity ownerEntity

    // ...
}

ご覧のとおり、これらには多対 1 の関係があります。 anは複数のOwnerEntityを持つことができますOwnedEntity

私が達成したいのは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 に答える