Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/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 休眠双向关系_Hibernate - Fatal编程技术网

Hibernate 休眠双向关系

Hibernate 休眠双向关系,hibernate,Hibernate,如何在hibernate中建立双向关系@OneToMany 我有3个表useraccount、category和item。在MyItem表中,它保存useraccount和category的外键。如果我建立单向,它将在item类中使用如下代码编译: @ManyToOne @JoinColumn(name="cat_id") public Category getCategory() { return category; } public void setCategory(Category

如何在hibernate中建立双向关系@OneToMany

我有3个表useraccount、category和item。在MyItem表中,它保存useraccount和category的外键。如果我建立单向,它将在item类中使用如下代码编译:

@ManyToOne
@JoinColumn(name="cat_id")
public Category getCategory() { return category;    }
public void setCategory(Category category) {this.category = category; }
private Category category;

@ManyToOne
@JoinColumn(name="user_id")
public UserAccount getItemOwner() { return itemOwner;   }
public void setItemOwner(UserAccount itemOwner) {   this.itemOwner = itemOwner; }
private UserAccount itemOwner;
但当我试图通过在useraccount和category中添加这些映射来定义双向时:

@OneToMany(mappedBy="USERACCOUNTS", targetEntity=Item.class, cascade=CascadeType.ALL)
public Set<Item> getOwnedItems() {  return ownedItems;  }
public void setOwnedItems(Set<Item> ownedItems) {   this.ownedItems = ownedItems;   }
private Set<Item> ownedItems;

@OneToMany(mappedBy="CATEGORIES", targetEntity=Item.class, cascade=CascadeType.ALL)
public Set<Item> getListOfItem() {  return listOfItem;  }
public void setListOfItem(Set<Item> listOfItem) {   this.listOfItem = listOfItem;   }
private Set<Item>listOfItem; 

我看了文件,但找不出问题出在哪里。谁能给我一些建议来解决这个问题。感谢

注释
@JoinColumn
表示此实体是关系的所有者(即:对应的表中有一列包含引用表的外键),而属性
mappedBy
表示此侧的实体是关系的反向,所有者位于“其他”实体中

根据:

由于在JPA规范中,多对一几乎总是双向关系的所有者方,一对多关联由@OneToMany注释(mappedBy=…)

你对@OneToMany的所有“mappedBy”都是错的。其值应为另一端的属性名称,请尝试按以下方式配置:

@OneToMany(mappedBy="itemOwner", cascade=CascadeType.ALL)
public Set<Item> getOwnedItems() {  return ownedItems;  }
@OneToMany(mappedBy=“itemOwner”,cascade=CascadeType.ALL)
公共集getOwnedItems(){return ownedItems;}

@OneToMany(mappedBy=“category”,cascade=CascadeType.ALL)
公共集GetListoItem(){return ListoItem;}
@Entity
public class Troop {
    @OneToMany(mappedBy="troop")
    public Set<Soldier> getSoldiers() {
    ...
}

@Entity
public class Soldier {
    @ManyToOne
    @JoinColumn(name="troop_fk")
    public Troop getTroop() {
    ...
} 
@Entity
public class Troop {
    @OneToMany
    @JoinColumn(name="troop_fk") //we need to duplicate the physical information
    public Set<Soldier> getSoldiers() {
    ...
}

@Entity
public class Soldier {
    @ManyToOne
    @JoinColumn(name="troop_fk", insertable=false, updatable=false)
    public Troop getTroop() {
    ...
}
@OneToMany(mappedBy="itemOwner", cascade=CascadeType.ALL)
public Set<Item> getOwnedItems() {  return ownedItems;  }
@OneToMany(mappedBy="category", cascade=CascadeType.ALL)
public Set<Item> getListOfItem() {  return listOfItem;  }