spring - 如何在 Spring JSON 查询中不发送 @IdClass 对象
问题描述
我正在设置服务器以使用 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
站点 ID 代码:
public class SiteId implements Serializable {
private Integer siteId;
private Integer contractId;
// setter, getter, constructor empty and full, hash and equals
感谢帮助:) Bessaix Daniel
解决方案
如果您使用的是 Spring,您可能还会使用 Jackson,因此如果您使用@JsonIgnoreTypeSiteId
注释您的类,则在序列化对象时根本不应该对其进行序列化。Site
但是,由于 id 对象不再序列化,我不确定这是否会破坏您的应用程序逻辑。
推荐阅读
- java - 如何在 Java 中为“image/*”的 String.matches() 制作有效的正则表达式?
- c# - async await 不符合预期的实际例子
- ios - 使用 xcode 构建失败问题
- ios - 删除 UIStackView 中的自定义间距
- mysql - jpa自定义查询多个参数
- c# - 使用 EF Core 和条件 WHERE 子句从数据库读取行时出现问题
- ssl - 如何使用 Rabbitmq 与 SSL 通信?
- timing - 为什么输出是“X”
- javascript - 你如何通过 eventBus 总线将更新传达给 Vue 组件中的视图?
- angular - 如何在 Angular 5 中的 Formly 中修改字段模板选项的最大值?