JP30とSpringをREST APIとして学習し、CRUD操作を実行するには、this tutorialに従っていました。私は、次のコードを使用して新しい顧客を作成しようとしている場合には、顧客が作成されSpring JPA JSONとモデルのマッピングが正しく行われていない
CREATE TABLE public.customer
(
id integer NOT NULL,
firstname character varying(50),
lastname character varying(50)
);
ではなく、それぞれのフィールドにfirstname
とlastname
データを挿入する:私は、次のスキーマと私のPostgreSQLでテーブルを定義しデータをfirst_name
とlast_name
という名前の新しい列に挿入します。このマッピングはどのように行われますか?
コントローラ - BaseController.java:
// all imports
@RestController
public class BaseController {
@Autowired
CustomerRepository repository;
@RequestMapping(value = "/postcustomer", method = RequestMethod.POST)
public void postCustomer(@RequestBody Response request) {
request.getData().forEach((data) -> {
repository.save(data.getCustomer());
});
}
}
JSONMapping - Response.java:
// all imports
public class Response implements Serializable {
private String status;
private List<Data> data;
public Response(String status, List<Data> data) {
this.status = status;
this.data = data;
}
public Response() {
}
//all getter setters below
}
JSONマッピング - Data.java:
// all imports
public class Data implements Serializable{
@JsonProperty("Customer")
private Customer customer;
public Data() {
}
public Data(Customer customer) {
this.customer = customer;
}
// all getter setters
}
モデル - Customer.java:
// all imports
@Entity
@Table(name = "customer")
public class Customer implements Serializable {
private static final long serialVersionUID = -3009157732242241606L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@JsonProperty("firstname")
@Column(name = "firstname")
private String firstName;
@JsonProperty("lastname")
@Column(name = "lastname")
private String lastName;
protected Customer() {
}
public Customer(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
// all getter setters
}
リポジトリ - CustomerRepository.java:
// all imports
public interface CustomerRepository extends CrudRepository<Customer, Long> {
}
JSONが送信されて:春JPAはそのを使用しているため
{
"status": "Done",
"data": [ {
"Customer": {
"firstname" : "test",
"lastname" : "123"
}
}]
}
ファイルapplication.propertiesに以下の行を置きます。 –
あなたのコードではfirst_name、last_nameのようなものはありませんので、テーブルから既存の列を削除し、ORM –