0

假设我有这两个类:

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

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

    public B(String t){
        this.text = t;
    }

    public String getText(){
        return this.text;
    }
}

基本上 A 类有一个包含 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,然后删除b1,但我想知道是否有另一种方法可以删除它而无需手动从arraylist中删除它。

这就是我得到的:

空值图像

谢谢。

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

db.getTransaction().begin();
B b = db.find(B.class, 2);
System.out.println(b.getText());
db.remove(b);
db.getTransaction().commit();
4

1 回答 1

0

如果我想在不手动操作的情况下将其删除,我该怎么办?

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

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

您可以参考此处以了解 API,并在此处查看有关同一概念的非常简单的示例。

于 2017-03-25T10:11:12.747 回答