【问题标题】:How to do not send @IdClass object in Spring JSON queries如何在 Spring JSON 查询中不发送 @IdClass 对象
【发布时间】:2019-08-19 15:59:35
【问题描述】:

我正在设置服务器以使用 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

感谢帮助 :) 贝塞·丹尼尔

【问题讨论】:

    标签: spring spring-boot


    【解决方案1】:

    如果您使用的是 Spring,那么您可能也在使用 Jackson,因此如果您使用 @JsonIgnoreType 注释您的 SiteIdclass,那么当 Site 对象被序列化时,它根本不应该被序列化。

    我不确定这是否会破坏您的应用程序逻辑,因为 id 对象不再被序列化。

    【讨论】:

    • 哇,原来如此简单,我既高兴又沮丧!非常感谢!
    猜你喜欢
    • 2021-04-11
    • 1970-01-01
    • 2018-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-30
    • 2015-12-30
    • 1970-01-01
    相关资源
    最近更新 更多