Это является продолжение на следующий вопрос о JPA Transient аннотации Why does JPA have a @Transient annotation?JPA Transient аннотации и JSON
У меня есть переходный переменный, которую я не хочу, чтобы сохраняться и отмечаются с транзиторной аннотацией. Однако, когда я хочу создать JSON из моего контроллера останова, эта переходная переменная недоступна в выведенном JSON.
POJO PublicationVO прямолинейно без каких-либо причудливых атрибутов, только некоторые частные атрибуты (которые сохраняются) с геттерами и сеттерами и 1 переходная переменная.
@RequestMapping(value = { "{publicationId}"}, method = RequestMethod.GET, produces = "application/json")
@ResponseBody public PublicationVO getPublicationDetailsJSON(@PathVariable(value = "publicationId") Integer publicationId) {
LOG.info("Entered getPublicationDetailsJSON - publicationId: " + publicationId);
//Call method to get the publicationVO based on publicationId
PublicationVO publicationVO = publicationServices.getPublicationByIdForRestCalls(publicationId);
LOG.info("publicationVO:{}", publicationVO);
LOG.info("Exiting getPublicationDetailsJSON");
return publicationVO;
}
PublicationVO выглядит следующим образом
package com.trinity.domain.dao;
import java.util.Calendar;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Transient;
import com.fasterxml.jackson.annotation.JsonInclude;
@Entity
@Table(name = "publication")
public class PublicationVO {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", unique = true, nullable = false)
private Integer id;
@Column(name = "publicationName", unique = false, nullable = false, length = 200)
private String publicationName;
@Column(name = "publicationSource", unique = false, nullable = false, length = 45)
private String publicationSource;
@Column(name = "dateAdded", unique = false, nullable = false)
private Calendar dateAdded;
@Transient
private float percentageProcessed;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getPublicationName() {
return publicationName;
}
public void setPublicationName(String publicationName) {
this.publicationName = publicationName;
}
public String getPublicationSource() {
return publicationSource;
}
public void setPublicationSource(String publicationSource) {
this.publicationSource = publicationSource;
}
public Calendar getDateAdded() {
return dateAdded;
}
public void setDateAdded(Calendar dateAdded) {
this.dateAdded = dateAdded;
}
public float getPercentageProcessed() {
return percentageProcessed;
}
public void setPercentageProcessed(float percentageProcessed) {
this.percentageProcessed = percentageProcessed;
}
@Override
public String toString() {
return "PublicationVO [id=" + id + ", publicationName=" + publicationName + ", publicationSource=" + publicationSource + ", dateAdded=" + dateAdded
+ ", percentageProcessed=" + percentageProcessed + "]";
}
}
Когда я вижу заявление отладки для publicationVO в моих журналах, переходная переменная включается в выходные, но в моем клиентском коде, переходная переменная не включен в ответ json.
Любая помощь очень ценится.
Спасибо, Дэмиен
Вы можете редактировать свой вопрос и опубликовать код PublicationVO? Имеет ли ваша переходная переменная не сериализация правильного геттера? – m4rtin
@ m4rtin - я просто включил класс публикацииVo. И да переходная переменная имеет метод getter –
Как я могу видеть аннотации Spring MVC, а также тег Spring в вашем вопросе, можете ли вы подтвердить, что сериализация JSON выполняется библиотекой Джексона? – m4rtin