“ IllegalArgumentException:类型为java.util.HashMap的目标bean不是持久实体的类型”使用嵌入式文档时

时间:2019-02-12 13:09:20

标签: java mongodb spring-boot spring-data-mongodb

我正在从spring-boot 1.5.10升级到2.1.1。但是,出现以下错误“ IllegalArgumentException:类型为java.util.HashMap的目标bean不是持久实体的类型”。

这是我的课程:

@Document
public class AbstractMongoDocument extends AbstractPersistable<String> {

  private static final long serialVersionUID = 1621100881694109722L;

  @CreatedDate
  private DateTime creationDate;

  @LastModifiedDate
  private DateTime modificationDate; 
}


public abstract class AbstractAuditableMongoDocument extends AbstractMongoDocument {

  private static final long serialVersionUID = 4962248712372390885L;

  @Version
  private Long version;

  @LastModifiedBy
  private String updatedBy;


  @CreatedBy
  private String createdBy;

}


public class Email extends AbstractAuditableMongoDocument {

  private static final long serialVersionUID = 7601333678154632864L;

  private String hashedEmail;

  public Email() {
  }

  public Email(
        String hashedEmail) {
    this.hashedEmail = hashedEmail;
}


@Validated
@Document
public class Account extends AbstractMongoDocument {

  private static final long serialVersionUID = -8228412296744241027L;

  @Indexed(unique = true)
  protected String primaryEmail;

  Map<String, Email> emails = new HashMap<>();
}

此设置在mongodb上于1.5.10上运行良好,但不再起作用,并抛出了上面提到的java.lang.IllegalArgumentException。

1 个答案:

答案 0 :(得分:0)

您必须将类型从long更改为Long。

Long是一个对象,可以通过java序列化机制对其进行序列化/反序列化。

如果模型中有HashMap,则应该只是Map。