将复合ID转换为简单ID实体休眠

时间:2019-05-15 13:58:03

标签: java oracle hibernate

我正在使用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的新副本表。

如何使用原始表格解决问题?

0 个答案:

没有答案