Я пытаюсь установить значения по умолчанию для атрибутов объекта, чтобы, если значения в базе данных были нулевыми, отображались значения по умолчанию.
Мои отношения сущностей следующие
@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;
Хотя для projectId
и projectName
установлены значения по умолчанию, при выполнении я по-прежнему вижу атрибуты проекта как нулевые. Что может быть причиной этого и как я могу установить значения по умолчанию для атрибутов проекта?
Сгенерированные значения
[{"empNo":"12690","empName":"SCOTT","project":null}]
Существуют значения для empNo и empName, однако для project.projectId и projectName в таблице базы данных существуют значения, поэтому я установил значение по умолчанию.
Ожидаемый результат согласно значениям по умолчанию, установленным для projectId
и projectName
[{"empNo":"12690","empName":"SCOTT","project":{"projectId":0,"projectName":"-"}}]
project
сам по себе является нулевым, поэтому вы не можете видеть значения. Также создание пустого объектаproject
не имеет смысла, по-прежнему считает ваш вопрос неполным, eidt и публикует полный вопрос с ожидаемым результатом, с проблемой, с которой вы столкнулись. - person Ankur Singhal   schedule 18.12.2014projectId
иprojectName
, равны нулю. Итак, мой вопрос: как обойти эту проблему? Я пытаюсь использоватьCOALESCE
, но выдает ошибку. См. этот пост stackoverflow.com/questions/27528976 / - person Jacob   schedule 18.12.2014POJO
, когдаprojects
равно нулю, создать пустой объект, и установите значения по умолчанию и сериализуйте этиPOJO
- person Ankur Singhal   schedule 18.12.2014