Spring 当 post 个实体时数据 Rest 警告
Spring Data Rest Warn when post an entity
我有一个 Spring Boot 2.5.2 项目和 Spring Data Rest(还有 Lombok)。
实体:
@Entity
@Table(uniqueConstraints = {
@UniqueConstraint(name = "IDX_COUNTRY_NAME_UNQ", columnNames = {"NAME"}),
@UniqueConstraint(name = "IDX_COUNTRY_CODE_UNQ", columnNames = {"CODE"})
})
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Country extends BaseNamedCodedEntity {
}
超类:
@MappedSuperclass
@Getter
@Setter
public abstract class BaseNamedCodedEntity extends BaseNamedEntity {
@NotNull
@Column(updatable = false, nullable = false, unique = true)
protected String code;
}
@MappedSuperclass
@Getter
@Setter
public abstract class BaseNamedEntity extends BaseEntity {
@NotNull
@Column(nullable = false)
private String name;
}
@MappedSuperclass
@Getter
public abstract class BaseEntity {
@Id
@GeneratedValue(generator = "UUID")
@GenericGenerator(name = "UUID", strategy = "org.hibernate.id.UUIDGenerator")
@Column(updatable = false, nullable = false)
private UUID id;
}
所有休息请求工作正常。但是当我用 Postman 发送一个简单的 POST 时:
{
"name": "Test",
"code": "Test"
}
实体保存在数据库中,但在 IDEA 控制台中我有一个警告:
2021-06-26 19:24:33.097 WARN 15420 --- [nio-8090-exec-5] tion$ResourceSupportHttpMessageConverter : Failed to evaluate Jackson deserialization for type [[simple type, class org.springframework.data.rest.webmvc.PersistentEntityResource]]: java.lang.NullPointerException
当通过 NullPointerException 进行调试时,我在 org.springframework.data.rest.webmvc.json.AggregateReferenceResolvingModule
中捕获了它
在方法
public BeanDeserializerBuilder updateBuilder(DeserializationConfig config, BeanDescription beanDesc, BeanDeserializerBuilder builder)
我在 [属性 '_links'] 中看到,属性类型:null。
那是 Spring 数据休息错误吗?
将 Spring 引导升级到 2.5.3 将解决此问题。
这是由于 Spring Data REST 版本 3.5.0 (#2033) 中引入的错误所致。它已在 Spring Data REST 版本 3.5.3 中得到修复,它包含在 Spring Boot 2.5.3 中。
我有一个 Spring Boot 2.5.2 项目和 Spring Data Rest(还有 Lombok)。 实体:
@Entity
@Table(uniqueConstraints = {
@UniqueConstraint(name = "IDX_COUNTRY_NAME_UNQ", columnNames = {"NAME"}),
@UniqueConstraint(name = "IDX_COUNTRY_CODE_UNQ", columnNames = {"CODE"})
})
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Country extends BaseNamedCodedEntity {
}
超类:
@MappedSuperclass
@Getter
@Setter
public abstract class BaseNamedCodedEntity extends BaseNamedEntity {
@NotNull
@Column(updatable = false, nullable = false, unique = true)
protected String code;
}
@MappedSuperclass
@Getter
@Setter
public abstract class BaseNamedEntity extends BaseEntity {
@NotNull
@Column(nullable = false)
private String name;
}
@MappedSuperclass
@Getter
public abstract class BaseEntity {
@Id
@GeneratedValue(generator = "UUID")
@GenericGenerator(name = "UUID", strategy = "org.hibernate.id.UUIDGenerator")
@Column(updatable = false, nullable = false)
private UUID id;
}
所有休息请求工作正常。但是当我用 Postman 发送一个简单的 POST 时:
{
"name": "Test",
"code": "Test"
}
实体保存在数据库中,但在 IDEA 控制台中我有一个警告:
2021-06-26 19:24:33.097 WARN 15420 --- [nio-8090-exec-5] tion$ResourceSupportHttpMessageConverter : Failed to evaluate Jackson deserialization for type [[simple type, class org.springframework.data.rest.webmvc.PersistentEntityResource]]: java.lang.NullPointerException
当通过 NullPointerException 进行调试时,我在 org.springframework.data.rest.webmvc.json.AggregateReferenceResolvingModule
中捕获了它
在方法
public BeanDeserializerBuilder updateBuilder(DeserializationConfig config, BeanDescription beanDesc, BeanDeserializerBuilder builder)
我在 [属性 '_links'] 中看到,属性类型:null。 那是 Spring 数据休息错误吗?
将 Spring 引导升级到 2.5.3 将解决此问题。
这是由于 Spring Data REST 版本 3.5.0 (#2033) 中引入的错误所致。它已在 Spring Data REST 版本 3.5.3 中得到修复,它包含在 Spring Boot 2.5.3 中。