java - 如何在Spring Controller 中使用JSON发送继承的对象?

标签 java json spring hibernate inheritance

我使用 Hibernate,除了这种情况之外一切都很好。如果我有类和继承类,当我在 Spring Controller 中使用 JSON 发送类似对象时,总是会收到错误 400 BadRequest。

如果我发送一个不是子类的对象,所有字段都可以很好地循环,并且所有内容都可以很好地存储。 这是示例:

@Entity
@javax.persistence.Table(name="person")
@Inheritance(strategy=InheritanceType.JOINED)
public class Person{
@Id
@GeneratedValue
@Column(name="id_person")
protected int id_person;
.....

@Entity
@javax.persistence.Table(name="client")
@PrimaryKeyJoinColumn(name="id_person")
public class Client extends Person{

@Column(name="address")
protected String address;
....

@Entity
@javax.persistence.Table(name="individual")
@PrimaryKeyJoinColumn(name="id_person")
public class Individual extends Client {

@Column(name="personal_number")  
protected String personalNumber;
.....

我在 Controller 中的方法:

@RequestMapping(value="/individualPerson", method=RequestMethod.POST)
public ResponseEntity<List<Individual>> posttest(HttpServletRequest request,   HttpServletResponse response, @RequestBody Individual indiv)

发送继承对象时是否需要一些额外的注释或设置?

此外,Hibernate 会自动创建所有带有在这些类中注释的主键的表。

最佳答案

如果使用 JSON 格式,Jackson library默认情况下不需要任何特殊注释。 Spring 开箱即用地支持它,因此通常您不需要指定任何其他内容:

@RequestMapping(value="/individualPerson", method=RequestMethod.POST, produces="application/json")

另一种选择是依赖 HTTP 内容协商,Spring 支持这种协商,并且在 products 属性中不指定任何格式

关于java - 如何在Spring Controller 中使用JSON发送继承的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32528546/

相关文章:

java - 编写 Controller 的正确方法

java - jar 中找不到 Logback 属性资源

java - 两个双重嵌套的匿名内部类。如何获得一级匿名类(class)成员?

java - .readLine()/readLine 的替代方案仅返回列表

json - 从列表中逐行构建数据框

json - (Kotlin 中的 Moshi)@Json 与 @field :Json

javascript - 在最后一行之后停止 jQuery JSON 数组循环

java - Spring:未找到符合 Autowiring 资格的匹配 bean

java wsimport 重命名/不同的 ObjectFactory.java

spring - 如何在 Kotlin 中使用扩展属性作为常量?