我正在设置服务器以使用JPA从Postgresql数据库获取CRUD api。每当我想从数据库中公开一个对象时,它都会复制idObject。
当我使用springframework从数据库中获取一个对象并将其发送之后,它会像这样复制idObject:
{
"siteId": 3,
"contractId": "1",
"name": "sitenumber1",
"siteIdObject": {
"siteId": 3,
"contractId": "1"
}
}
SiteId和contractId正在重复... 但我想要这样的东西:
{
"siteId": 3,
"contractId": "1",
"name": "sitenumber1"
}
我想避免使用DTO,因为我认为有更好的方法,但是我找不到。由于我只使用springFramework一两个月,所以我可能会忘记一些东西...
有代码:
网站代码:
@Entity
@IdClass(SiteId.class)
@Table(name = "site", schema="public")
public class Site {
@Id
@Column(name="siteid")
private Integer siteId;
@Id
@Column(name="clientid")
private Integer contractId;
private String name;
@JsonIgnore
@OneToMany(cascade=CascadeType.ALL, mappedBy = "site")
public Set<Device> devices;
//setter, getter, hash, equals, tostring, constructor empty one and full one
SiteId代码:
public class SiteId implements Serializable {
private Integer siteId;
private Integer contractId;
// setter, getter, constructor empty and full, hash and equals
感谢帮助:) 贝萨克斯·丹尼尔
答案 0 :(得分:0)
如果您使用的是Spring,则可能还使用了Jackson,因此,如果用@JsonIgnoreType注释SiteId
类,则Site
对象被序列化时,它根本就不应被序列化。
但是,由于id对象不再被序列化,因此我不确定这是否会破坏您的应用程序逻辑。