2017-09-02 98 views
1

我有三个表, 其中一个是(场景),它是主表, 两个其他表(链接,节点)是它的细节。 我想JPA坚持外键为我坚持情景链接和节点表中没有我的干预, 有没有人帮我做到这一点?对于JPA中的外键主对象详细ID

enter image description here

场景:

@Entity 
@NamedQueries({ @NamedQuery(name = "Scenario.findAll", query = "select o from Scenario o") }) 
public class Scenario implements Serializable { 
private String className; 
@Id 
@Column(nullable = false,name="ID") 
private int id; 
private String linkFromPortIdProperty; 
private String linkToPortIdProperty; 
private String UUID; 
@OneToMany(mappedBy = "scenario", cascade = { CascadeType.PERSIST, CascadeType.MERGE }) 
private List<Link> linkDataArray; 
@OneToMany(mappedBy = "scenario1", cascade = { CascadeType.PERSIST, CascadeType.MERGE }) 
private List<Node> nodeDataArray; 

链接:

@Entity 
@NamedQueries({ @NamedQuery(name = "Lnk.findAll", query = "select o from Link o") }) 
@Table(name = "LNK", schema = "DEV_SGMNT") 

public class Link implements Serializable { 
private static final long serialVersionUID = -5262332521707870082L; 


@Transient 
private String to; 
private int fromPort; 
@Id 
@Column(nullable = false) 
private int id; 
private double[] points; 
@Transient 
private String from; 
private int toPort; 
@ManyToOne 
@JoinColumn(name = "SCENARIO_ID") 
private Scenario scenario; 

节点:

@Entity 
@NamedQueries({ @NamedQuery(name = "Node.findAll", query = "select o from Node o") }) 
public class Node implements Serializable { 
private static final long serialVersionUID = -8401815303355236645L; 
private String classname; 
@Id 
@Column(nullable = false) 
private int id; 
private BigDecimal inbound; 
private String key; 
private BigDecimal outbound; 
private String properties; 
private String tab; 
private String text; 
private String vizitems; 
@ManyToOne 
@JoinColumn(name = "SCENARIO_ID") 
private Scenario scenario1; 
+0

我想我明白你的'不intervention'的意思。但是,为了清楚起见,我建议您在代码片段中添加用于保存'... persist(链接)'的代码以及数据库中的预期结果。 – alexbt

回答

0

使用CascadeType.ALL您要PERSI所有细节对象st当主实体(Scenario)持续时。

@OneToMany(mappedBy = "scenario",cascade = CascadeType.ALL, orphanRemoval = true) 
private List<Link> linkDataArray; 

阅读本指南由vladmihalcea写:

Reference