Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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
从数据库objectdb java中删除对象_Java_Database_Jpa_Arraylist_Objectdb - Fatal编程技术网

从数据库objectdb java中删除对象

从数据库objectdb java中删除对象,java,database,jpa,arraylist,objectdb,Java,Database,Jpa,Arraylist,Objectdb,假设我有两门课: @Entity public class A { @GeneratedValue @Id Integer aNum; ArrayList<B> bS; public A(){ bS = new ArrayList<B>(); } public void addB(B b){ bS.add(b); } } 基本上,一个类有一个arraylist,其中包含来自B类的

假设我有两门课:

@Entity
public class A {
    @GeneratedValue @Id
    Integer aNum;
    ArrayList<B> bS;

    public A(){
        bS = new ArrayList<B>();
    }

    public void addB(B b){
        bS.add(b);
    }
}
基本上,一个类有一个arraylist,其中包含来自B类的对象,我想将这些对象插入objectdb数据库:

    A a = new A();
    B b1 = new B("text1");
    B b2 = new B("text2");
    a.addB(b1);
    a.addB(b2);

    db.getTransaction().begin();
    db.persist(a);
    db.persist(b1);
    db.persist(b2);
    db.getTransaction().commit();
当我试图从数据库中删除b1时,问题就出现了。它会从它的类中删除,但如果我检查A的arraylist,它仍然会保留空值。如果我希望在不手动操作的情况下将其删除,该怎么办?我可以手动将b1从arraylist中删除,然后再删除b1,但我想知道是否有其他方法可以删除b1,而无需手动将其从arraylist中删除

这就是我得到的:

谢谢

编辑:这就是我删除的方式

db.getTransaction().begin();
B b = db.find(B.class, 2);
System.out.println(b.getText());
db.remove(b);
db.getTransaction().commit();
如果我想在不做的情况下将其移除,该怎么办 手动

您需要为实体类别A和B维护
@OneToMany
关系,如下所示:

@Entity
public class A {
    @GeneratedValue 
    @Id
    Integer aNum;

    @OneToMany(mappedBy="department", cascade={CascadeType.ALL})
    List<B> bS;

    //getters and setters
}


@Entity
public class B {
    @GeneratedValue 
    @Id
    Integer bNum;

    String text;

    @ManyToOne
    @JoinColumn(name = "aNum")
    private A a;

    //getters and setters
}
@实体
公共A类{
@生成值
@身份证
整型核仁;
@OneToMany(mappedBy=“department”,cascade={CascadeType.ALL})
名单b;
//接球手和接球手
}
@实体
公共B级{
@生成值
@身份证
整数bNum;
字符串文本;
@许多酮
@JoinColumn(name=“aNum”)
私人A;
//接球手和接球手
}

您可以参考了解API并查找关于同一概念的非常简单的示例。

请包括用于删除
B
对象的代码。编辑了postAnd Cascade。删除谢谢,还添加了
Cascade
@Entity
public class A {
    @GeneratedValue 
    @Id
    Integer aNum;

    @OneToMany(mappedBy="department", cascade={CascadeType.ALL})
    List<B> bS;

    //getters and setters
}


@Entity
public class B {
    @GeneratedValue 
    @Id
    Integer bNum;

    String text;

    @ManyToOne
    @JoinColumn(name = "aNum")
    private A a;

    //getters and setters
}