有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Cascade在Hibernate中不工作

我有一个系统,其中我有两种类型的设备:静态设备和动态设备。由于我对mysql继承的了解有限,而且我不知道如何使用hibernate,所以我只制作了一个BASEDEVICE。所以staticdevice和dyndevice都有一个指向basedevice的外键,我已经将static和dyndevice设置为null

The database 问题是,当我保存basedeivce时,我希望要么保存dyndevice,要么保存staticdevice,因为我已经用CascadeType对它进行了注释。坚持它不起作用,所以我试着用它。全部的还是不行

@Entity
@NamedQuery(name="Basedevice.findAll", query="SELECT b FROM Basedevice b")
public class Basedevice implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int id;

    //bi-directional one-to-one association to Dyndevice
    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name="id", referencedColumnName="BASEDEVICE_id", nullable = true)
    private Dyndevice dyndevice;

    //bi-directional one-to-one association to Staticdevice
    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name="id", referencedColumnName="BASEDEVICE_id", nullable = true)
    private Staticdevice staticdevice;

    //bi-directional one-to-one association to Devicemap
    @OneToOne
    @JoinColumn(name="id", referencedColumnName="BASEDEVICE_id", nullable = true)
    private Devicemap devicemap;

    //bi-directional many-to-one association to Logentry
    @OneToMany(mappedBy="basedevice", fetch = FetchType.EAGER)
    private List<Logentry> logentries;
    ....
}

为什么它不能保持我的静态或动态性?Basedevice保持良好,我确信它有一个静态设备:

public void addStaticDevice(Staticdevice device) {
    DAO<Basedevice> basedeviceDAO = new DAO<>(Basedevice.class);
    basedeviceDAO.save(device.getBasedevice());
    devices_.add(device.getBasedevice());
}

在哪里。save方法调用entitymanager的persist方法。 我以前从未遇到过cascade的问题

有什么想法吗


共 (0) 个答案