[英]“MappingException: No property null found on entity class java.time.OffsetDateTime to bind constructor parameter to!” with Spring MongoDB
[英]Spring data cassandra: No property builder found on class User to bind constructor to
我开始了一个基本的 Spring 项目。 我使用 Spring 数据 Cassandra。
我的模型使用构建器模式。 这是我的用户类:
@Table("user")
@JsonDeserialize(builder = User.Builder.class)
public class User {
@PrimaryKey
public final String username;
@Column("password")
public final String password;
@Column("firstname")
public final String firstName;
@Column("lastname")
public final String lastName;
@Column("birthdate")
public final Date birthDay;
@Column("emailaddress")
public final String emailAddress;
@Column("organization")
public final String organization;
@Column("locality")
public final String locality;
@Column("stateprovince")
public final String stateProvince;
@Column("countrycode")
public final String countryCode;
@Column("disabled")
public final boolean disabled;
@Column("registrationdate")
public final Date registrationDate;
private User(Builder builder) {
username = builder.username;
password = builder.password;
firstName = builder.firstName;
lastName = builder.lastName;
birthDay = builder.birthDay;
emailAddress = builder.emailAddress;
organization = builder.organization;
locality = builder.locality;
stateProvince = builder.stateProvince;
countryCode = builder.countryCode;
disabled = builder.disabled;
registrationDate = builder.registrationDate;
}
public static Builder newBuilder() {
return new Builder();
}
public static Builder newBuilder(User copy) {
Builder builder = new Builder();
builder.username = copy.username;
builder.password = copy.password;
builder.firstName = copy.firstName;
builder.lastName = copy.lastName;
builder.birthDay = copy.birthDay;
builder.emailAddress = copy.emailAddress;
builder.organization = copy.organization;
builder.locality = copy.locality;
builder.stateProvince = copy.stateProvince;
builder.countryCode = copy.countryCode;
builder.disabled = copy.disabled;
builder.registrationDate = copy.registrationDate;
return builder;
}
public static final class Builder {
private String username;
private String password;
private String firstName;
private String lastName;
private Date birthDay;
private String emailAddress;
private String organization;
private String locality;
private String stateProvince;
private String countryCode;
private boolean disabled;
private Date registrationDate;
private Builder() {
}
public static Builder newStub() {
return new Builder()
.withUsername("stub")
.withEmailAddress("stub@unittest.com")
.withPassword("dontforgettests")
.withCountryCode("9")
.withFirstName("Someone")
.withLastName("Overarainbow");
}
public Builder withUsername(String val) {
username = val;
return this;
}
//etc
}
我在控制器端将 json 从 POST 请求序列化到 User 对象没有问题。 当我调用 repo 来保存对象时也没有问题,但是当我这样做时:
User getByUsername(String username);
然后我收到以下错误:没有在实体类 com.project.model.user.User 上找到属性构建器来绑定构造函数参数
我该如何解决这个问题?
要创建 Spring Data 实体,必须在 POJO 中编写一些必需元素,您应该拥有完整的参数构造函数、getter 和 setter。 此外,不要犹豫,添加默认构造函数并使用 equals 和 hashCode 方法覆盖 toString。 这是使用 Spring Data Cassandra 术语的实体类示例:
@Table
public class Person {
@PrimaryKey
private final String id;
private final String name;
private final int age;
public Person(String id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return String.format("{ @type = %1$s, id = %2$s, name = %3$s, age = %4$d }",
getClass().getName(), getId(), getName(), getAge());
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.