java - Spring数据cassandra : No property builder found on class User to bind constructor to

标签 java spring cassandra builder

我开始了一个基本的 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
}

我在 Controller 端将来自 POST 请求的 json 序列化到 User 对象没有问题。 当我调用存储库来保存对象时也没有问题,但是当我这样做时:

User getByUsername(String username);

然后我收到以下错误: 在实体类 com.project.model.user.User 上找不到用于绑定(bind)构造函数参数的属性生成器

如何解决这个问题?

最佳答案

要创建 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());
  }
}

关于java - Spring数据cassandra : No property builder found on class User to bind constructor to,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60548364/

相关文章:

java - 从其他一些 Arraylist 的元素填充 Arraylist。

java - 在 Java 中打印数组

java - 将cassandra blob类型转换为字符串

algorithm - 如何在考虑性能的情况下在 Cassandra 3.0 中对多对多关系进行建模

java - MOXy:继承和列表

amazon-web-services - Amazon Keyspace TRUNCATE 指令不起作用

java - Netty ChannelOutboundHandlerAdapter 写入

java - 自定义适配器 onClick 未注册点击

java - 是否可以从Android应用程序调用Spring Controller Post方法

java - 避免 OLTP 上的 Spring Batch 作业