我们正在开发一个应用程序,其中有一个树结构。使用javaee和jpa(eclipselink)以及mysql。
我的问题是:拯救父母会拯救所有的孩子。我删除了cascadetype persist和merge,但它仍然级联。
示例代码:父节点:
@Entity
@Table(name = "node")
@NamedQuery(name = "node.findAll", query = "SELECT n FROM Node n")
public class Node implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column(name = "NAME", nullable = false, unique = true)
private String name;
@OneToMany(fetch = FetchType.LAZY)
@MapKey(name = "name")
@MapKeyColumn(name = "name")
@MapKeyJoinColumn(name = "name")
@JoinColumn(name = "NODE_ID", referencedColumnName = "id")
private Map<String, Data> datas = new HashMap<String, Data>();
以及子节点:
@Entity
@Table(name = "data")
@NamedQuery(name = "data.findAll", query = "SELECT d FROM Data d")
@IdClass(DataId.class)
public class Data implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Id
@Column(name = "NAME", nullable = false)
private String name;
父节点“node”还有一个称为system的父节点。代码类似于节点和数据。共有8个级别,但都是相似的,使用一对一关系构建树。在保存节点(父节点)时,是否可以避免保存数据(子)对象。例如,我想保存级别6(系统节点)中的一个对象,这样它就不应该保留或合并子节点。
因为每次rest我都会从客户机接收到一些节点和数据,我想立即保存节点,但是数据对象稍后会使用一个线程来检查哪些数据是新的,并且只保存它们。
暂无答案!
目前还没有任何答案,快来回答吧!