2017-08-05 165 views
0

我的jpa映射有什麼錯誤,即時嘗試將具有一個主關鍵字的父類映射到具有複合關鍵字的子類,但似乎它插入錯誤的表中,它已經產生2表,但不幸的是我沒有約束力的外鍵(policy_value_summary_id)休眠/ JPA - 複合關鍵子代的一個主關鍵字

子類具有複合主鍵與一個是父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 

回答

0

不,在Oracle版本12.2之前,標識符的長度不能超過30個字符。查看文檔

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

但是從12.2版本,他們可能會很長

+0

最多128個字節,但我已經添加了註解@Table(name =「POLICY_VALUE」)的策略值,但它一直插入到錯誤的表和列(它將父類連接到它的子表和列) – KoiaH