我有实体,我需要一些不被保留的字段和一些不被序列化的字段。
我在某些字段上使用@Transient,但是当我想为Gson标记瞬态时。问题在于hibernate选择它并且也不会持久化,因为它也是Hibernate中的关键字。
我使用Hibernate-jpa-2.1-api javax.persistence.Transient
我正在尝试阻止addresses
被序列化,并且不应保存getDefaultAddress
。
代码:
@Entity
@Table(name="Business")
public class Business{
@OneToMany(mappedBy="business")
private transient List<Phone> addresses;
@Transient
public Phone getDefaultPhone() {
return phones.get(0);
}
}
任何解决方案?
答案 0 :(得分:0)
您可以使用@Expose
@Expose(serialize = false)
@OneToMany(cascade=CascadeType.ALL, mappedBy="business")
private List<Address> addresses;
为了能够使用此注释,
final GsonBuilder builder = new GsonBuilder();
builder.excludeFieldsWithoutExposeAnnotation();
final Gson gson = builder.create();
答案 1 :(得分:0)
我正在使用Play Framework的JPA和Gson的实现。
我将其与JPA类一起使用,如下所述,它涉及在编组到json之前动态构造嵌入式对象,并且GSON构建器不需要任何更改,因为修改GSONBuilder也会全局更改其他类的策略。 / p>
public class DBServiceDefinition {
@Transient
@Expose(serialize = true)
@SerializedName("serviceStatus")
public ServiceDefinitionStatus status = new
ServiceDefinitionStatus(201,"SUCCESS","","Test");
}