Morphia 中用于嵌套的 ORM Class

ORM in Morphia for a Nested Class

我在 Morphia DB 中的 Json 文档如下所示 -

{
    "_id" : ObjectId("58fcdf7e"),
    "status" : "ACTIVE",
    "user" : {
        "id" : NumberLong(228),
        "email" : "testing@domian.com"
    } 
}

我为这个集合创建了一个 Java class,看起来像这样 -

@Entity("member_offer")
public class MemberOffer {
  @Id
  private ObjectId objectId;

  @Property("status")
  private String status;

  @Embedded("user")
  private UserDetail user;

  @Embedded
  class UserDetail {
    @Property("id")
    public long memberId;

    @Property("email")
    public String email;

    UserDetail() {

    }
  }

  public ObjectId getObjectId() {
    return objectId;
  }

  public void setObjectId(ObjectId objectId) {
    this.objectId = objectId;
  }

  public String getStatus() {
    return status;
  }

  public void setStatus(String status) {
    this.status = status;
  }

  public UserDetail getUser() {
    return user;
  }

  public void setUser(UserDetail user) {
    this.user = user;
  }
}

现在,当我尝试获取数据时,出现了这个异常 -

java.lang.RuntimeException: org.mongodb.morphia.mapping.MappingException: No usable constructor for vo.MemberSubscription$UserDetail

Caused by: org.mongodb.morphia.mapping.MappingException: No usable constructor for vo.MemberSubscription$UserDetail

Caused by: org.mongodb.morphia.mapping.MappingException: No usable constructor for vo.MemberSubscription$UserDetail

Caused by: java.lang.NoSuchMethodException: vo.MemberSubscription$UserDetail.()

知道如何解决这个问题吗?我只想将 UserDetail 嵌套 class,我知道如果我将其创建为独立的 class,则可以解决此错误。但我的问题是这样的事情(嵌套 class)可以在 Morphia 中实现吗?

此外,如果我的设计存在一些根本性缺陷,请告知我。

你应该尝试对构造函数使用public修饰符,同时使UserDetail(内部class)是static

由于积分不足,无法post发表评论,所以对答案有疑问。您知道哪个更改解决了问题,public 修饰符还是使内部 class 静态?如果它是 static 修饰符,我对 Sergii 的问题是为什么这会有所不同?我们遇到了同样的问题,但只是间歇性的。