Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 连接表中带有额外列的JPA多对多问题_Hibernate_Jpa_Many To Many - Fatal编程技术网

Hibernate 连接表中带有额外列的JPA多对多问题

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)

我正在尝试为多对多关系设置一个JPA映射,该关系在联接表中有一个额外的列。我的模型如下所示: Hikelist(id)、Item(id)、ItemList(idList、itItem、quantity)

我的映射:

项目:

@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;
}