JPA实体属性的默认值

时间:2014-12-18 05:11:53

标签: java jpa orm toplink

我正在尝试为实体属性设置默认值,这样如果数据库中的值为null,它将显示默认值。

我的实体关系如下

@Entity
@Table(name = "EMP")
public class Emp implements Serializable {

@Id
@Column(name = "empno", nullable = false)
private String empNo;

@JsonBackReference("proj")
@ManyToOne
@JoinColumn(name = "PROJECT_ID", referencedColumnName = "PROJECT_ID")
private Project project;

public Project getProject() {
    return Project;
    }

public void setProject(Project project) {
    this.project = project;
//  this.project = project == null ? <notSure>  : project; // not sure what to give default value
    }

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

@Id
@Column(name="PROJECT_ID", nullable = false)
private Long projectId = 0L; // default value

@Column(name = "PROJECT_NAME" , nullable = true)
private String projectName = "-"; // default value

@JsonManagedReference("proj")
@OneToMany(mappedBy = "project")
private List<Emp> empList;

public Long getProjectId() {
    return projectId;
    }

public void setProjectId(Long projectId) {
//  this.projectId = projectId;
    this.projectId = projectId == null ? 0L : projectId;
    }

public String ProjectName() {
    return projectName;
    }

我不确定该

的默认值是什么
this.project = project == null ? <notSure>  : project;

虽然为projectIdprojectName设置了默认值,但在执行时,我仍然将项目属性视为null。可能是什么原因以及如何设置项目属性的默认值?

生成的值

[{"empNo":"12690","empName":"SCOTT","project":null}]

empNo和empName存在值,但是对于project.projectId和projectName,数据库表中存在值,因此我设置了默认值。

根据projectIdprojectName

设置的默认值预期输出
[{"empNo":"12690","empName":"SCOTT","project":{"projectId":0,"projectName":"-"}}]

0 个答案:

没有答案