Значения по умолчанию для атрибутов сущности JPA

Я пытаюсь установить значения по умолчанию для атрибутов объекта, чтобы, если значения в базе данных были нулевыми, отображались значения по умолчанию.

Мои отношения сущностей следующие

@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":"-"}}]

person Jacob    schedule 18.12.2014    source источник
comment
глядя на ваш json, кажется, что ваш объект project сам по себе является нулевым, поэтому вы не можете видеть значения. Также создание пустого объекта project не имеет смысла, по-прежнему считает ваш вопрос неполным, eidt и публикует полный вопрос с ожидаемым результатом, с проблемой, с которой вы столкнулись.   -  person Ankur Singhal    schedule 18.12.2014
comment
@ankur-singhal Да, ваше предположение верно, проект имеет значение null, потому что такие атрибуты проекта, как projectId и projectName, равны нулю. Итак, мой вопрос: как обойти эту проблему? Я пытаюсь использовать COALESCE, но выдает ошибку. См. этот пост stackoverflow.com/questions/27528976 /   -  person Jacob    schedule 18.12.2014
comment
@ankur-singhal Я включил ожидаемый результат в свой вопрос.   -  person Jacob    schedule 18.12.2014
comment
Почему вы хотите обрабатывать это поведение на уровне объектов? Рассматривали ли вы реализацию этого поведения на уровне службы с использованием объектов модели, а не сущностей. Уровень службы может справиться с созданием модели (моделей) проекта «по умолчанию», если это необходимо.   -  person MarkOfHall    schedule 18.12.2014
comment
@Polppan также мы можем сделать одну вещь: позволить объекту сохранить то, что он есть, создать промежуточный слой, при загрузке из БД создать и вызвать вашу службу/утилиту, преобразовать данные объекта в POJO, когда projects равно нулю, создать пустой объект, и установите значения по умолчанию и сериализуйте эти POJO   -  person Ankur Singhal    schedule 18.12.2014