2017-04-06 117 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应该在没有拥有的实体中,我会相应地编辑我的答案 –