Добавление вычисляемого поля на jpa + jackson

Как добавить вычисляемое поле в сущность?

Таблица БД

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;
    }
}

person GMEFil    schedule 04.03.2015    source источник
comment
Если вы аннотируете поля, а не геттеры, Hibernate проигнорирует ваши геттеры. Я не понимаю, зачем Джексону заботиться о @Transient, который является аннотацией JPA, а не аннотацией Джексона.   -  person JB Nizet    schedule 04.03.2015
comment
У меня нет поля для этого. У меня есть только геттерный метод. В этом методе я объединяю две строки...   -  person GMEFil    schedule 04.03.2015
comment
Да так? Если вы аннотируете свои поля, Hibernate будет игнорировать ваши геттеры и, таким образом, не будет рассматривать fullName как постоянное свойство.   -  person JB Nizet    schedule 04.03.2015
comment
хорошо, я не совсем понял, что вы сказали, когда я впервые прочитал это, но это работает. Тем не менее, есть ли другой способ сделать это? эти классы генерируются с помощью обратного проектирования hibernate, и все аннотации находятся в методах. там СОТНИ полей...   -  person GMEFil    schedule 04.03.2015
comment
Джексон может рассматривать @Transient, но только при использовании модуля Hibernate; и даже тогда можно настроить его не использовать. Но это может сыграть свою роль, в зависимости от того, используется ли модуль Hibernate.   -  person StaxMan    schedule 04.03.2015
comment
Вы можете дать нам свою реальную сущность (чтобы увидеть все аннотации)? @JsonProperty работает, только если вы используете Джексона в качестве провайдера, уверены ли вы, что ваш десериализатор использует Джексона в качестве провайдера.   -  person Panchitoboy    schedule 05.03.2015