2010-10-25 31 views
43

Tôi gặp sự cố khi thiết lập mối quan hệ một đến nhiều trong đối tượng được chú thích của tôi.mappedBy tham chiếu thuộc tính đối tượng mục tiêu không xác định

tôi có như sau:

@MappedSuperclass 
public abstract class MappedModel 
{ 
    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    @Column(name="id",nullable=false,unique=true) 
    private Long mId; 

thì đây

@Entity 
@Table(name="customer") 
public class Customer extends MappedModel implements Serializable 
{ 

    /** 
    * 
    */ 
    private static final long serialVersionUID = -2543425088717298236L; 


    /** The collection of stores. */ 
    @OneToMany(mappedBy = "customer", cascade = CascadeType.ALL, fetch = FetchType.LAZY) 
    private Collection<Store> stores; 

và điều này

@Entity 
@Table(name="store") 
public class Store extends MappedModel implements Serializable 
{ 

    /** 
    * 
    */ 
    private static final long serialVersionUID = -9017650847571487336L; 

    /** many stores have a single customer **/ 
    @ManyToOne(fetch = FetchType.LAZY) 
    @JoinColumn (name="customer_id",referencedColumnName="id",nullable=false,unique=true) 
    private Customer mCustomer; 

những gì tôi đang làm sai ở đây

Trả lời

76

Thuộc tính mappedBy đang r eferencing customer trong khi thuộc tính là mCustomer, do đó thông báo lỗi. Vì vậy, hoặc thay đổi ánh xạ của bạn thành:

/** The collection of stores. */ 
@OneToMany(mappedBy = "mCustomer", cascade = CascadeType.ALL, fetch = FetchType.LAZY) 
private Collection<Store> stores; 

Hoặc thay đổi thuộc tính thực thể thành customer (đó là những gì tôi sẽ làm).

Tham chiếu mappedBy cho biết "Tìm giao diện trên thuộc tính bean có tên 'khách hàng' trên điều tôi có bộ sưu tập để tìm cấu hình."

+0

hoạt động, tôi đã mong đợi nó sử dụng sự phản chiếu sử dụng phương thức setter hoặc getter chứ không phải trực tiếp thuộc tính. – boyd4715

+0

@ boyd4715: Bạn có thể thử di chuyển chú thích của mình trên getters để xem điều gì sẽ xảy ra khi sử dụng quyền truy cập thuộc tính (so với truy cập trường). Mặt khác, javadoc của 'mappedBy' nói * Trường sở hữu mối quan hệ * vì vậy tôi không chắc chắn điều này sẽ thay đổi bất cứ điều gì. –

+0

Điều đó đã hiệu quả, Cảm ơn bạn đã nhanh chóng làm rõ –

Các vấn đề liên quan