Hibernate 连接表中带有额外列的JPA多对多问题
我正在尝试为多对多关系设置一个JPA映射,该关系在联接表中有一个额外的列。我的模型如下所示: Hikelist(id)、Item(id)、ItemList(idList、itItem、quantity) 我的映射: 项目:Hibernate 连接表中带有额外列的JPA多对多问题,hibernate,jpa,many-to-many,Hibernate,Jpa,Many To Many,我正在尝试为多对多关系设置一个JPA映射,该关系在联接表中有一个额外的列。我的模型如下所示: Hikelist(id)、Item(id)、ItemList(idList、itItem、quantity) 我的映射: 项目: @Entity @Table(name = "T_ITEM") public class Item implements Serializable { @Id @GeneratedValue(strategy = GenerationType.TABLE)
@Entity
@Table(name = "T_ITEM")
public class Item implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private Long id;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
private Collection<Itemlist> setOfItemHikelist = new ArrayList<Itemlist>();
@OneToMany(fetch = FetchType.LAZY, mappedBy = "pk.item", cascade=CascadeType.ALL)
public Collection<Itemlist> getSetOfItemHikelist() {
return setOfItemHikelist;
}
public void setSetOfItemHikelist(Collection<Itemlist> setOfItemHikelist) {
this.setOfItemHikelist = setOfItemHikelist;
}
}
ItemListId:
@Embeddable
public class ItemListId implements java.io.Serializable{
private Item item;
private Hikelist hikelist;
@ManyToOne
public Item getItem() {
return item;
}
public void setItem(Item item) {
this.item = item;
}
@ManyToOne
public Hikelist getHikelist() {
return hikelist;
}
public void setHikelist(Hikelist hikelist) {
this.hikelist = hikelist;
}
}
我得到了这个错误:
原因:org.hibernate.MappingException:无法确定类型
for:java.util.Collection,在表:T_HIKELIST中,对于列:
[org.hibernate.mapping.Column(setofitemikelist)]位于
org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:336)位于
org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:310)位于
org.hibernate.mapping.Property.isValid(Property.java:241)位于
org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:496)
位于org.hibernate.mapping.RootClass.validate(RootClass.java:270)
org.hibernate.cfg.Configuration.validate(Configuration.java:1358)位于
org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1849)
在
org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:850)
如果有人能帮我。。。谢谢大家! < P>我想你是在混合ACCESTPE,在你使用字段和属性中的注释的类项目中,考虑这样做。< /P>
@OneToMany(fetch = FetchType.LAZY, mappedBy = "pk.item", cascade=CascadeType.ALL)
private Collection<Itemlist> setOfItemHikelist = new ArrayList<Itemlist>();
public Collection<Itemlist> getSetOfItemHikelist() {
return setOfItemHikelist;
}
@OneToMany(fetch=FetchType.LAZY,mappedBy=“pk.item”,cascade=CascadeType.ALL)
私有集合setOfItemHikelist=new ArrayList();
公共集合getSetOfItemHikelist(){
返回setOfItemHikelist;
}
将注释放在字段上,就像在同一个类的Id中那样
@OneToMany(fetch = FetchType.LAZY, mappedBy = "pk.item", cascade=CascadeType.ALL)
private Collection<Itemlist> setOfItemHikelist = new ArrayList<Itemlist>();
public Collection<Itemlist> getSetOfItemHikelist() {
return setOfItemHikelist;
}