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
Java 休眠多对一外键不工作_Java_Hibernate - Fatal编程技术网

Java 休眠多对一外键不工作

Java 休眠多对一外键不工作,java,hibernate,Java,Hibernate,下面是一对多关系的hibernate示例 cart java class @Entity @Table(name="cart") public class Solocart { @Id @GeneratedValue(strategy=GenerationType.AUTO) @Column(name="carts_id") int id; @Column(name="cust_name") String name; @OneToMany

下面是一对多关系的hibernate示例

cart java class
@Entity
@Table(name="cart")
public class Solocart {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name="carts_id")
    int id;
    @Column(name="cust_name")

    String name;
    @OneToMany(mappedBy="cartitem")
    Set<Soloitems>soloitem;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Set<Soloitems> getSoloitem() {
        return soloitem;
    }
    public void setSoloitem(Set<Soloitems> soloitem) {
        this.soloitem = soloitem;
    }




}
impl代码

Session sn=Util.getSessionFactory().openSession();
    sn.beginTransaction();
    Solocart crt=new Solocart();
    crt.setName("solomon");
    Soloitems itm1=new Soloitems();
    Soloitems itm2=new Soloitems();
    itm1.setNumber(5);
    itm2.setNumber(8);
    Set<Soloitems>values= new HashSet<Soloitems>();
    values.add(itm1);
    values.add(itm2);
    crt.setSoloitem(values);
    sn.save(crt);
    sn.save(itm2);
    sn.save(itm1);
    sn.getTransaction().commit();
    sn.close();
    System.out.println("sucessfully created");
第二桌

# carts_id, cust_name
    '1', '   solomon'
正如您看到的,这两个表都已更新,但本例中的foreignkey carts\u id在owner类中未得到更新,我使用了joincolumn

您没有在Soloitems的任何位置设置Solocart。尝试将其添加到代码中

itm1.setCartitem(crt);
itm2.setCartitem(crt);

实体solocat和Soloitems之间存在双向关系,因此在代码中需要从实体的两侧维护这种关系

基于此,在您的代码中,您只是将Soloitems设置为Solocart,但没有将Solocart设置为Soloitems,如Predrag所述,添加以下代码行以维护关系:

itm1.setCartitem(crt);
itm2.setCartitem(crt);

您需要设置一个级联选项-即,当持久化父实体时-子实体也将持久化:通常在@OneToMany中,您应该设置级联和获取,从@manytone开始使用mappedBy,但不强制使用后一种onetahnks来帮助它worked@energizer它jsut craetesa新表cart_cartitem连接两个表主键列但外键未更新此处是更改usuggested@energizer@OneToManycascade=CascadeType.ALL@ManyToOnefetch=FetchType.LAZY@JoinColumnname=carts\u id但我得到了一个新的表carts\u id,soloitem\u cart\u id'1','1','2'
itm1.setCartitem(crt);
itm2.setCartitem(crt);
itm1.setCartitem(crt);
itm2.setCartitem(crt);