【发布时间】:2015-11-12 21:14:54
【问题描述】:
好的,所以我在 Oracle DB 上有 2 个表,我想用 Spring 3 和 Hibernate 3 在 Java 中表示它们。它们具有多对一关系,并且这些表类似于
CAR
-------
CAR_PK
//... other columns
OPTION
------
CAR_FK
OPTION_TEXT
//... other columns
因为 Options 表只对 Car 有意义,所以我们只关心在访问 Car 时访问它,因此它没有自己的唯一 PK。此外,每辆车可以有超过 1 个选项。因此,我们使用的是 CAR_FK 和 OPTIONS_TEXT 的复合 id
java类似于
public class Car{
@Id
@Column(name="CAR_PK")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="CAR_KEY_SEQ")
@SequenceGenerator (name="CAR_KEY_SEQ", sequenceName="CAR_KEY_SEQ", allocationSize=1)
private long carPk;
@OneToMany(cascade= CascadeType.ALL, mappedBy="car")
@JoinColumn(name="CAR_PK")
private List<Option> options;
//... other stuff
}
@IdClass(OptionId.class)
public class Option{
@Id
private long carFk;
@Id
private String optionText;
@ManyToOne
@JoinColumn(name="CAR_FK")
private Car car;
//... other stuff
}
@Emeddable
public class OptionId implements Serializable{
@Column(CAR_FK)
private long carFk;
@Column(OPTION_TEXT)
private String optionText
//... other stuff
}
在插入时,我希望为 Car 对象中的 carPk 生成的相同密钥插入到 Option 对象中的 carFk 中。我该怎么做?我明白了
java.sql.SQLException: Invalid column index
我做错了什么?
【问题讨论】:
标签: java hibernate foreign-keys composite-key