簡體   English   中英

將JPA Embedded實體類id映射到Embeddable實體類id

[英]Map JPA Embedded entity class id to Embeddable entity class id

我有一節課:

@Entity
public class A {
    @Embedded
    @AttributeOverride(name = "id", column = @Column(name = "b_id"))
    private B b;
}

表A中有列b_id BIGINT NOT NULL

@Embeddable
@Entity
public class B {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
}

我們收到錯誤:引起:org.hibernate.MappingException:找不到組件屬性:id

基本上,我們需要使用id在A中映射B.

請幫助

我認為問題在於嵌入式類中的@Id 我們不能在嵌入式類中使用。 嘗試刪除它? 如果你可以刪除它,如果你只需要一個id字段,請嘗試使用@EmbeddedId

嘗試這個

    @Entity
    public class A implements Serializable {
    private static final long serialVersionUID = 9154946919235019012L;
    @Embedded
    @AttributeOverride(name = "id", column = @Column(name = "b_id"))
    private B b;
    public A() {
    }

    public A(B b) {
        this.b = b;
    }


    public B getB() {
        return b;
    }

    public void setB(B b) {
        this.b = b;
    }
    }

這是B級

@Embeddable
@Entity

public class B implements Serializable {
    private static final long serialVersionUID = 5579181803793008928L;
    @Id
    @Column(nullable = false)
    private Long id;

    public B(Long id) {
        this.id=id;
    }
    public B(){

    }

    public void setId(Long id) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }
    }

除了隱式no arg之外,你沒有getter和setter,或者沒有其他構造函數。 你應該有一個no-args構造函數和getter和setter方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM