【发布时间】:2016-07-01 13:13:07
【问题描述】:
我有这些表:
CREATE TABLE ref.doc (
id serial PRIMARY KEY,
iddoc integer NOT NULL UNIQUE,
docname varchar(254) NOT NULL
);
CREATE TABLE person (
id serial PRIMARY KEY,
name varchar(40) DEFAULT NULL,
doctype integer DEFAULT NULL REFERENCES ref.doc(iddoc)
);
我需要使用 Spring 构建一个 RESTful Web 服务,它接收 JSON 并在经过一些验证后将它们保存到数据库中。例如,ref.doc 中有一条带有iddoc = 2 的记录。所以person 的 JSON 看起来像这样:
{
"name": "John",
"doctype": 2
}
我想做这样的事情:
@RestController
public class PersonController {
@Autowired
PersonRepository personRepository;
@Transactional
@RequestMapping(value = "/add", method = RequestMethod.POST)
@ResponseBody
public Person add(@RequestBody Person person) {
// some logic
personRepository.saveAndFlush(person);
return person;
}
}
我有这些实体:
@Entity
@Table(schema = "ref")
public class Doc {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
private long id;
private Integer iddoc;
private String docname;
...
}
@Entity
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
private long id;
private String name;
@ManyToOne
@JoinColumn(name = "doctype", referencedColumnName = "iddoc", nullable = false)
private Doc doc;
...
}
在这种情况下,person 中的doc 始终是null,这很容易理解。但是如何实现我需要的行为呢?
【问题讨论】:
标签: java spring rest spring-data-jpa