1
에 대한사용자 정의 시리얼 I 두 클래스 뉴스 및 NewsList</p> <p>News.class가있는 경우에만 속성이 아닌 클래스
@Entity
@Table(name = News.TABLE_NAME)
@NamedQueries({
@NamedQuery(name = News.FIND_ALL, query = "SELECT n FROM News n"),
@NamedQuery(name = News.FIND_BY_SWID, query = "SELECT n FROM News n WHERE n.swId = :swId"),
@NamedQuery(name = News.FIND_BY_LINK, query = "SELECT n FROM News n WHERE n.link = :link"),
@NamedQuery(name = News.FIND_BY_LIST, query = "SELECT n FROM News n WHERE n.list = :list ORDER BY n.lastModified DESC") })
public class News {
public static final String TABLE_NAME = "news";
public static final String ID_SEQ = "seq_news_id";
public static final String FIND_ALL = "News.findAll";
public static final String FIND_BY_SWID = "News.findBySwId";
public static final String FIND_BY_LINK = "News.findByLink";
public static final String FIND_BY_LIST = "News.findByList";
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = ID_SEQ)
@SequenceGenerator(name = ID_SEQ, allocationSize = 1, initialValue = 1, sequenceName = ID_SEQ)
private long id;
@Column(name = "swid", nullable = false, unique = true)
private long swId;
@Column(name = "link", nullable = false, unique = true)
private String link;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "lastmodified")
private Date lastModified;
@Column(name = "title", nullable = false)
private String title;
@Column(name = "lead", nullable = false, length = 500)
private String lead;
@Lob
@Basic(fetch = FetchType.LAZY)
@Column(name = "content", nullable = true)
private String content;
@ElementCollection(fetch = FetchType.LAZY, targetClass = Media.class)
@CollectionTable(name = "news_media")
private List<Media> medias = new ArrayList<Media>();
@ManyToOne(fetch = FetchType.LAZY, targetEntity = NewsList.class, optional = false)
@JoinColumn(name = "newslist_id", nullable = false)
@JsonProperty(value = "newslist_id")
@JsonSerialize(using = NewsListPropertySerializer.class)
private NewsList list;
//Getters and Setters
}
NewsList.class
@Entity
@Table(name = NewsList.TABLE_NAME)
@NamedQueries({
@NamedQuery(name = NewsList.FIND_ALL, query = "SELECT nl FROM NewsList nl"),
@NamedQuery(name = NewsList.FIND_BY_NAME, query = "SELECT nl FROM NewsList nl WHERE nl.name = :name"),
@NamedQuery(name = NewsList.FIND_BY_TYPE, query = "SELECT nl FROM NewsList nl WHERE nl.type = :type"),
@NamedQuery(name = NewsList.FIND_BY_GROUP, query = "SELECT nl FROM NewsList nl WHERE nl.group = :group"),
@NamedQuery(name = NewsList.FIND_NOMAIN_GROUP, query = "SELECT nl FROM NewsList nl WHERE nl.group <> org.ewicom.pps.webservice.news.NewsListGroup.MAIN") })
public class NewsList {
public static final String TABLE_NAME = "newslist";
public static final String ID_SEQ = "seq_newslist_id";
public static final String FIND_ALL = "NewsList.findAll";
public static final String FIND_BY_NAME = "NewsList.findByName";
public static final String FIND_BY_TYPE = "NewsList.findByType";
public static final String FIND_BY_GROUP = "NewsList.findByGroup";
public static final String FIND_NOMAIN_GROUP = "NewsList.finNoMainGroup";
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = ID_SEQ)
@SequenceGenerator(name = ID_SEQ, allocationSize = 1, initialValue = 1, sequenceName = ID_SEQ)
private long id;
@Column(name = "listname", nullable = false, unique = true)
private String name;
@Enumerated(EnumType.STRING)
@Column(name = "listtype", nullable = false)
private NewsListType type;
@Enumerated(EnumType.STRING)
@Column(name = "listgroup", nullable = false)
private NewsListGroup group;
@Column(name = "listlink", nullable = false, unique = true)
private String link;
@OneToMany(targetEntity = News.class, cascade = CascadeType.REMOVE, mappedBy = "list", fetch = FetchType.LAZY, orphanRemoval = true)
@OrderBy("lastModified DESC")
@JsonIgnore
private List<News> news;
//Getters and Setters
}
I 재산 목록에 대한 사용자 정의 시리얼을 추가 in news.class
public class NewsListPropertySerializer extends StdSerializer<NewsList> {
public NewsListPropertySerializer(Class<NewsList> t) {
super(t);
}
@Override
public void serialize(NewsList value, JsonGenerator jgen,
SerializerProvider provider) throws IOException,
JsonGenerationException {
jgen.writeNumber(value.getId());
}
}
Jackson이 News를 serialize 할 때 모든 것이 정상이지만 NewsList 시스템을 serialize하고 사용자 정의 serializer를 사용하여 ID 만 인쇄하려고합니다. 속성에 대해서만 serializer를 추가하는 방법.