2017-04-06 118 views
0

我正在試圖製作購物車的物品。用戶有多個項目,所以我這樣做: 我有一個@Entity @Table類項目,它實現Serializableorg.hibernate.AnnotationException映射錯誤

private User user; 

...

@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
public Long getId() { 
    return id; 
} 
public void setId(Long id) { 
    this.id = id; 
} 


@OneToMany(cascade = ALL, fetch = FetchType.EAGER, mappedBy = "items") 
@Column(nullable = true, updatable = false) 
public User getUser() { 
    return user; 
} 

和User.java(@Entity @Table實現Serializable):

private List<Item> items; 
@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
public Long getId() { 
    return id; 
} 

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

...

@ManyToOne 
public List<Item> getItems() { 
    return items; 
} 

public void setItems(List<Item> items) { 
    this.items = items; 
} 

我得到的是這樣的錯誤:

Caused by: org.hibernate.AnnotationException: Illegal attempt to map a non collection as a @OneToMany, @ManyToMany or @CollectionOfElements: org.auction.model.Item.user"}} 
+0

你已經得到了你的註釋backwar DS。 '公開名單 getItems()'是OneToMany和'公共用戶getUser()'是ManyToOne –

回答

1

你有你的註釋混在一起,@OneToMany是收集

的一組中的項目類

@ManyToOne(cascade = ALL, fetch = FetchType.EAGER) 
@Column(nullable = true, updatable = false) 
    public User getUser() { 
    return user; 
    } 

,並在用戶你將有OneToMany

@OneToMany(mappedBy = "user") 
public List<Item> getItems() { 
    return items; 
} 
+0

做到了這一點..我也在OneToMany註釋中放置了cascade,fetch和mappedBy「user」..我仍然得到一個ERROR:org .hibernate.AnnotationException:ManyToOne屬性不允許使用列:org.auction.model.Item.user 您有任何想法嗎? – Nica

+0

其實mappedBy應該在沒有擁有的實體中,我會相應地編輯我的答案 –