Как добавить вычисляемое поле в сущность?
Таблица БД
table person {
id number,
first_name varchar,
last_name varchar,
...
}
объект Java
public class person {
BigDecimal id;
String firstName;
String lastName;
...//getters and setters
//what to add here???
public String getFullName() {
return firstName + " " + lastname;
}
}
Я пытался добавить @Transient, но поле игнорируется при преобразовании в json. Я попытался просто оставить метод там, выдает исключение, что установщик отсутствует. добавление установщика вызывает еще одно исключение, что поле не существует в БД. Я пытался добавить @Transient и @JsonPropert, но поле игнорируется при преобразовании в json. Я попытался добавить @Formula, но спящий режим (я думаю) говорит, что он не реализован.
Идея состоит в том, чтобы иметь простое вычисляемое поле, которое игнорируется jpa/hibernate, но используется jackson. Как я могу это сделать?
ИЗМЕНИТЬ
Пример полного класса
@Entity
@Table(name="FDF_PATIENT_COUNTIE")
@JsonIdentityInfo(generator = JSOGGenerator.class)
@JsonIgnoreProperties(ignoreUnknown = true)
@Audited
public class PatientCounty extends FgaBaseClass {
private static final long serialVersionUID = 1425318521043179798L;
private BigDecimal id;
private County FCounties;
private Patient patients;
public PatientCounty() {
}
public PatientCounty(County FCounties, Patient patients) {
this.FCounties = FCounties;
this.patients = patients;
}
@SequenceGenerator(name="generator", sequenceName="FDF_PATIENT_COUNTIE_SEQ")
@Id
@GeneratedValue(strategy=SEQUENCE, generator="generator")
@Column(name="ID", unique=true, nullable=false, precision=22, scale=0)
public BigDecimal getId() {
return this.id;
}
public void setId(BigDecimal id) {
this.id = id;
}
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="ID_F_COUNTIE")
public County getFCounties() {
return this.FCounties;
}
public void setFCounties(County FCounties) {
this.FCounties = FCounties;
}
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="ID_FDF_PATIENT")
public Patient getPatients() {
return this.patients;
}
public void setPatients(Patient patients) {
this.patients = patients;
}
}
@Transient
, который является аннотацией JPA, а не аннотацией Джексона. - person JB Nizet   schedule 04.03.2015@Transient
, но только при использовании модуля Hibernate; и даже тогда можно настроить его не использовать. Но это может сыграть свою роль, в зависимости от того, используется ли модуль Hibernate. - person StaxMan   schedule 04.03.2015