Java 发布时,SpringREST无法反序列化嵌套对象
在尝试使用SpringBoot应用程序发布时,我收到一个错误,即嵌套对象为null。下面是代码..有什么想法吗 后请求:Java 发布时,SpringREST无法反序列化嵌套对象,java,spring,jackson,Java,Spring,Jackson,在尝试使用SpringBoot应用程序发布时,我收到一个错误,即嵌套对象为null。下面是代码..有什么想法吗 后请求: { "id": 1, "username": "luisau", "password": "fe4354", "firstName": "Luisa", "lastName": "k", "dob": "2011-07-15", "streetName": "str", "st
{
"id": 1,
"username": "luisau",
"password": "fe4354",
"firstName": "Luisa",
"lastName": "k",
"dob": "2011-07-15",
"streetName": "str",
"streetNumber": "38",
"city": "town",
"postalCode": "43546",
"country": "Germany",
"registrationTime": "2017-07-13T16:45:34Z",
"registrationIp": "192.23.45.6",
"gender": "Female",
"registrationChannel": {"id": 2}
}
类别:
@Entity
public class Customer {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne
private RegistrationChannel registrationChannel;
private String email;
private String username;
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private String password;
@Enumerated(EnumType.STRING)
private Gender gender;
private char title;
private String firstName;
private String lastName;
@Convert(converter = Jsr310JpaConverters.LocalDateConverter.class)
private LocalDate dob;
@Embedded
@JsonUnwrapped
private Address address;
private String registrationIp;
private Instant registrationTime;
//getters, setters omitted
Caused by: org.mariadb.jdbc.internal.util.dao.QueryException: Column 'registration_channel_id' cannot be null
Query is: insert into customer (city, country, postal_code, street_name, street_number, dob, email, first_name, gender, last_name, password, registration_channel_id, registration_ip, registration_time, title, username) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?), parameters
错误消息很清楚,您的注册频道为空。原因是您不能只发送
注册频道
id,在ORM中,您需要存储注册频道
对象
例如,在保存到数据库方法中:
public void save(Customer customer, int registrationChannelId) {
RegistrationChannel registrationChannel = findRegistrationChannel(registrationChannelId);
customer.addRegistrationChannel(registrationChannel);
// save your customer
}
我是这样解决的:
我必须调整POST的有效负载,以包含嵌套资源的url
{
"id": 1,
"username": "luisau",
"password": "fe4354",
"firstName": "Luisa",
"lastName": "k",
"dob": "2011-07-15",
"streetName": "str",
"streetNumber": "38",
"city": "town",
"postalCode": "43546",
"country": "Germany",
"registrationTime": "2017-07-13T16:45:34Z",
"registrationIp": "192.23.45.6",
"gender": "Female",
"registrationChannel": "/registrationChannels/2"
}
似乎你发布了一半的代码,而另一部分被切断了。你能发布你的RegistrationChannel对象以及保存方法吗?@tima我省略了Breviti的getter和setter。我想只使用一个id,而不是嵌套对象的完整表示