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 中。