ORA-00904:映射问题导致无效标识符

问题描述 投票:0回答:1

我有一个以下面显示的此错误消息命名的问题。

java.sql.SQLSyntaxErrorException: ORA-00904: "DETAILORDE1_"."BOOK": invalid identifier

这意味着不要使用Book和DetailOrder类进行映射。

我搜索了很多资源来解决它。我尝试了很多选项,但没有改变。 pk.book值无法从Book类中感知。

我该如何解决?

以下是如下所示的代码。

@Entity
@Table(name="BOOK",catalog = "JSPPROJECTDATABASE")
public class Book implements Serializable{
...
@OneToMany(mappedBy = "pk.book", cascade=CascadeType.ALL)
private Set<DetailOrder> detailOrders = new HashSet<DetailOrder>();

DetailOrder

@Entity
@Table(name = "DETAIL_ORDER", catalog = "JSPPROJECTDATABASE")
@AssociationOverrides({
        @AssociationOverride(name = "pk.orders", 
            joinColumns = @JoinColumn(name = "ORDER_ID")),
        @AssociationOverride(name = "pk.book", 
            joinColumns = @JoinColumn(name = "BOOK_ID")) })
public class DetailOrder implements Serializable{
...
@EmbeddedId
    public DetailOrderId getPk() {
        return pk;
    }

    public void setPk(DetailOrderId pk) {
        this.pk = pk;
    }

    @Transient
    public Book getBook() {
        return getPk().getBook();
    }

    public void setBook(Book book) {
        getPk().setBook(book);
    }

    @Transient
    public Orders getOrders() {
        return getPk().getOrders();
    }

    public void setOrders(Orders orders) {
        getPk().setOrders(orders);
    }

DetailOrderId

@Embeddable
public class DetailOrderId implements Serializable{

    @ManyToOne(cascade=CascadeType.ALL)
    @JoinColumn(name = "BOOK_ID")
    private Book book;

    @ManyToOne(cascade=CascadeType.ALL)
    @JoinColumn(name = "ORDER_ID")
    private Orders orders;

    public Book getBook() {
        return book;
    }
    public void setBook(Book book) {
        this.book = book;
    }
    public Orders getOrders() {
        return orders;
    }
    public void setOrders(Orders orders) {
        this.orders = orders;
    }
hibernate mapping many-to-many one-to-many embeddable
1个回答
0
投票

我没有使用复合id就解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.