2017-09-02 34 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