簡體   English   中英

使用 DataJpaTest 時在 Hibernate 上使用 IdClass 的復合鍵作為復合鍵

[英]Composite keys using IdClass on Hibernate for composite keys when using DataJpaTest

我有這樣的 JPA class

@Data
@Entity
@Table(name = "oss_org_discount")
@IdClass(OrganizationDiscountPK.class)
public class OrganizationDiscount {
    @Id
    @OneToOne(fetch = FetchType.LAZY)
    @EqualsAndHashCode.Exclude
    @JoinColumn(name = "Org")
    @ToString.Exclude
    private Organization organization;

    @EqualsAndHashCode.Include
    @ToString.Include
    private String getOrganizationId() {

        return organization.getId();
    }

    @Id
    @Column(name = "Discount")
    private String discountId;

    private String active;

    @Contract(pure = true)
    public boolean isActive() {

        return "Y".equals(active);
    }

    public void setActive(final boolean active) {

        this.active = active ? "Y":"";
    }
}

和一個 IdClass。

@Data
public class OrganizationDiscountPK implements Serializable {
    private Organization organization;
    private String discountId;
}

當我查看日志時,我看到生成了以下內容。

Hibernate: alter table oss_org_discount add constraint UK_ecc64ehkc31t6kf0hcdwj1tvi unique (org)

我的問題是,它不應該顯示類似

Hibernate: alter table oss_org_discount add constraint UK_ecc64ehkc31t6kf0hcdwj1tvi unique (org, discount)

不確定這是我的錯誤還是 Hibernate 中的錯誤。

我確實看到了這個...

Hibernate: create table oss_org_discount (discount varchar(255) not null, active varchar(255), org varchar(255) not null, primary key (discount, org))

所以另一個問題是為什么要創建一個唯一的約束?

問題是Organization上的OneToOne 應該是@ManyToOne

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM