我正在使用Java 1.7,JBOSS EAP 6.4,hibernate jpa 2.0和数据库oracle。
我正在尝试将实体的复合ID修改为简单ID。
原始课程
Surface_mesh
新课程
@Entity
@Table(name = "FOO_BAR")
@IdClass(FooBarId.class)
public class FooBar{
@ManyToOne
@JoinColumn(
name = "COD_FOO",
updatable = false,
insertable = false)
@JsonIgnore
private Foo foo;
@ManyToOne
@JoinColumn(
name = "COD_BAR",
updatable = false,
insertable = false)
@JsonIgnore
private Bar bar;
@Id
@Column(name = "COD_FOO")
private String codFoo;
@Id
@Column(name = "COD_BAR")
private String codBar;
//getter and setter
}
public class FooBarId implements Serializable {
private String codFoo;
private String codBar;
public String getCodFoo() {
return codFoo;
}
public void setCodFoo(String codFoo) {
this.codFoo = codFoo;
}
public String getCodBar() {
return codBar;
}
public void setCodBar(String codBar) {
this.codBar = codBar;
}
}
在构建阶段没有问题。 在部署阶段,我遇到以下错误:
@Entity
@Table(name = "FOO_BAR")
public class FooBar{
@Id
private Long Id;
@ManyToOne
@JoinColumn(
name = "COD_FOO",
updatable = false,
insertable = false)
@JsonIgnore
private Foo foo;
@ManyToOne
@JoinColumn(
name = "COD_BAR",
updatable = false,
insertable = false)
@JsonIgnore
private Bar bar;
@Column(name = "COD_FOO")
private String codFoo;
@Column(name = "COD_BAR")
private String codBar;
//getter and setter
}
@Entity
@Table(name = "FOO_BAR_OTHER")
public class FooBarOther{
@Id
@Column(name = "ID")
private Long id;
@Column(name = "DATA")
private String data;
@ManyToOne
@JoinColumn(
name = "ID_FOO_BAR",
referencedColumnName = "ID",
insertable = false,
updatable = false)
private FooBar fooBar;
}
某项保存了组合键,我无法将其删除。
我试图用相同的表FOO_BAR,相同的错误创建一个新的类FooBar2。
我试图创建仅具有ID和相同表,相同错误的FooBar2类。
我试图删除所有数据库约束,出现同样的错误。
唯一有效的方法是创建原始FOO_BAR2的新副本表。
如何使用原始表格解决问题?