2013-05-07 168 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的实例的事件引用集合 。如果您想让 双向链接此链接,则必须在其他 一侧通过在事件中向该集合添加个人引用来执行相同操作。这个 “设置双方链接”的过程是绝对必要的,双向链接。