簡體   English   中英

Hibernate / JPA-復合鍵子級的一個主鍵父級

[英]Hibernate/JPA - one primary key parent to composite key child

我的jpa映射出了什么問題,我試圖將具有一個主鍵的父類映射到具有復合鍵的子類,但是似乎它插入了錯誤的表,已經生成了2個表,但是不幸的是我沒有綁定外部表鍵(policy_value_summary_id)

@Entity
@Table(name = "POLICY_VALUE_SUMMARY")
public class PolicyValueSummary {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="POLICY_VALUE_SUMMARY_ID")
    private Long policyValueSummaryId;

    @MapsId("policyValueSummaryId")
    @OneToMany
    private Set<PolicyValue> policyValues;
}

子類具有復合鍵,其中一個是父ID。

@Entity
@Table(name = "POLICY_VALUE")
public class PolicyValue {

    @EmbeddedId
    @AttributeOverrides({
            @AttributeOverride(name = "policyValueSummaryId", column = @Column(name = "POLICY_VALUE_SUMMARY_ID")),
            @AttributeOverride(name = "planAtrId", column = @Column(name = "PLAN_ATR_ID")) })
    private PolicyValuePk policyValuePk;

}

這是我的子類組合鍵。

@Embeddable
public class PolicyValuePk implements Serializable {

    private Long policyValueSummaryId;

    private Long planAtrId;
}

我試圖像這樣將策略摘要值(父級)與策略值(子類)一起保存

        PolicyValuePk pk = new PolicyValuePk();
        pk.setPlanAtrId(Long.valueOf("1"));

        Set<PolicyValue> policyValues = new HashSet<>();
        policyValues.add(new PolicyValue(pk));

        PolicyValueSummary summary = new PolicyValueSummary();
        summary.setPolicyValues(policyValues);

        repo.save(summary);

這是輸出給我的錯誤

Hibernate: select hibernate_sequence.nextval from dual
Hibernate: insert into policy_value_summary (policy_value_summary_id) values (?)
Hibernate: insert into policy_value_summary_policy_values (policy_value_summary_policy_value_summary_id, policy_values_plan_atr_id, policy_values_policy_value_summary_id) values (?, ?, ?)
WARN 6880 --- [           main] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 972, SQLState: 42000
ERROR 6880 --- [           main] o.h.engine.jdbc.spi.SqlExceptionHelper   : ORA-00972: identifier is too long

不可以,在Oracle 12.2版之前,標識符的長度不能超過30個字符。 見文件

http://docs.oracle.com/cd/B28359_01/server.111/b28286/sql_elements008.htm#SQLRF00223

但是從版本12.2開始,它們的最大長度為128個字節

暫無
暫無

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

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