【发布时间】:2021-06-26 16:48:04
【问题描述】:
我有一个带有 Spring Data Rest(Lombok 也是)的 Spring Boot 2.5.2 项目。 实体:
@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)
我在 [property '_links'] 中看到,propertyType: null。 那是 Spring Data Rest 错误吗?
【问题讨论】:
-
我在从 Spring Boot 2.4.5 升级到 2.5.2(将 Spring Data 3.4.8 升级到 3.5.1)时也遇到了这个问题。当我找到这个问题时,我会更新这个。
标签: java spring-data-rest