当前位置: 首页 > 面试题库 >

JACKSON REST API仅在ManyToOne中添加具有其ID的实体字段

邓禄
2023-03-14
问题内容

我有点喜欢Spring Rest API。我有两个具有单向多对一关系的实体。

@Entity
public class Users{
    @Id @Column(name = "user_id") @JsonProperty("userId")
    private int id;

    @ManyToOne @JoinColumn("city_id")
    private City city;

    // other fields, getters, setters
}

@Entity
public class City{
    @Id @Column(name = "city_id") @JsonProperty("cityId")
    private int id;

    private String name;

    // other fields, getters, setters
}

假设我在城市表中已经有一些城市。当我想使用http post方法添加城市ID为2的新用户时,我必须执行以下操作:

{
  "userId": 1,
  "city": {
     "cityId": 2
  }
}

正如你所看到的,我不得不集团cityIdcity实体第一。没有分组怎么办?像这样 :

{
  "userId": 1,
  "cityId": 2
}

问题答案:

您可以使用@JsonUnwrapped 链接

用于指示属性应“未包装”序列化的注释;也就是说,如果将其序列化为JSON对象,则其属性将作为其包含对象的属性包含在内。

样例代码:

@Entity
public class Users{
    @Id @Column(name = "user_id") @JsonProperty("userId")
    private int id;

    @JsonUnwrapped
    @ManyToOne @JoinColumn("city_id")
    private City city;

    // other fields, getters, setters
}


 类似资料:
  • 我对spring rest api有点陌生。我有两个具有单向多对一关系的实体。 假设我在城市表中已经有一些城市。当我想使用http post方法添加城市id为2的新用户时,我必须执行以下操作: 如您所见,我必须首先将城市ID分组到城市实体中。没有分组,我怎么做?这样地:

  • 问题内容: 如果我有两个像这样的hibernate实体: 我有一个已经存储的公司 我可以创建一个仅用其ID引用公司的人,而不是加载整个记录,例如: 它是仅保存参考还是使用更新公司? 问题答案: 是的,您可以做到。 它是否仅保存引用,还是使用name = null更新公司? 使用default ,这样,Hibernate将不执行任何操作。因此答案是:它只保存一个外键。 最有效的方法(也适用于JPA)

  • 我使用JPA Hibernate Spring进行简单的工作。我写了下一个模块: 服务: 服务: 道: 我正在尝试向子实体卷添加一些记录。 但是在沃姆格之后。在点1添加(vol)我没有看到任何添加的记录(子实体)。为什么? upd 当然我会在交易结束后看到这些记录,但为什么我不能在交易结束前看到这些记录呢???它们必须在内存缓存中。。。 upd2 我的Spring。xml

  • 花了3天时间寻找解决方案,最后我来到这里寻求社区智慧。 我有如下的自我引用实体: 我通过手动运行它来确保请求不会返回数据库中的任何内容,但发现如果我将更改为,它将返回数据,因此,块中可能存在错误

  • 我是一个初学者,学习JPA,为了练习,我在这个问题上工作,我有两个实体班Person和Gym。 Person有:-id(自动生成)-name-age-gym(多对一映射) 在我的服务课上,这就是我正在做的

  • 我正在用Java、Spring和JPA开发一个web应用程序。我有这两个实体,它们代表一个用户及其后续通知。当一个用户跟踪另一个用户时,被跟踪的用户将收到一个follow通知。 我想删除User并删除它的所有通知,但我想保留通知的引用用户,也就是开始跟踪主用户的用户。唯一的问题是,当我尝试删除用户时,会出现以下错误: com.mysql.jdbc.exceptions.jdbc4.mysqlint