2013-05-07 153 views
2

我在我的數據庫中有2個表。我有一個項目,可以有多個版本。一個版本屬於一個項目。一切工作正常,除了我的生成表中的外鍵保持爲空。JPA +休眠外鍵爲空

項目

@Entity(name="project") 
public class Project implements Serializable { 

@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
@Column(name = "projectID") 
private Long id; 

@Column 
@JsonProperty("displayName") 
private String name; 

@JsonProperty("builds") 
@JsonIgnore 
@LazyCollection(LazyCollectionOption.FALSE) 
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, mappedBy = ("project")) 
private Collection<Build> builds; 

public Project() { 
} 

public Project(String name) { 
    this.name = name; 
} 

public Collection<Build> getBuilds() { 
    return builds; 
} 

public void setBuilds(Collection<Build> builds) { 
    this.builds = builds; 
} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public Long getId() { 
    return id; 
} 

public void setId(Long id) { 
    this.id = id; 
} 

@Override 
public String toString() { 
    return ToStringBuilder.reflectionToString(this); 
} 
} 

構建

​​

有誰看到這個問題?

謝謝。

+0

請附上您堅持您的實體的代碼 – 2013-05-07 08:13:13

回答

1

使用JPA,您需要在Build對象中明確定義Project

Project project = new Project(); 

Build build = new Build(); 
build.setProject(project); 

project.setBuilds(Collections.singletonList(build)); 

// now you can persist it  
em.persist(project) 

從休眠documentation

首先,請記住,Hibernate並不影響通常的Java 語義。我們如何在 這個單向示例中創建一個Person和一個事件之間的鏈接?將Event的實例添加到Person的實例的事件引用集合 。如果您想讓 雙向鏈接此鏈接,則必須在其他 一側通過在事件中向該集合添加個人引用來執行相同操作。這個 「設置雙方鏈接」的過程是絕對必要的,雙向鏈接。