![](/img/trans.png)
[英]JPA annotation for parent composite key to be part of child composite primary key
[英]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.