我使用 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/