从数据库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
}