Java 嵌套类的Morphia中的ORM

Java 嵌套类的Morphia中的ORM,java,mongodb,orm,inner-classes,morphia,Java,Mongodb,Orm,Inner Classes,Morphia,我在Morphia DB中的Json文档如下所示- { "_id" : ObjectId("58fcdf7e"), "status" : "ACTIVE", "user" : { "id" : NumberLong(228), "email" : "testing@domian.com" } } @Entity("member_offer") public class MemberOffer { @Id private

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

{
    "_id" : ObjectId("58fcdf7e"),
    "status" : "ACTIVE",
    "user" : {
        "id" : NumberLong(228),
        "email" : "testing@domian.com"
    } 
}
@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类,如下所示-

{
    "_id" : ObjectId("58fcdf7e"),
    "status" : "ACTIVE",
    "user" : {
        "id" : NumberLong(228),
        "email" : "testing@domian.com"
    } 
}
@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:没有可用的构造函数 对于vo.MemberSubscription$UserDetail

原因:org.mongodb.morphia.mapping.MappingException:无可用 vo.MemberSubscription$UserDetail的构造函数

原因:org.mongodb.morphia.mapping.MappingException:vo.MemberSubscription$UserDetail没有可用的构造函数

原因:java.lang.NoSuchMethodException:vo.MemberSubscription$UserDetail。()

你知道我如何解决这个问题吗?我只希望UserDetail是嵌套类,我知道如果我将它创建为独立类,这个错误可以解决。但我的问题是,在Morphia中是否可以实现类似的功能(嵌套类)


另外,如果我的设计中存在一些基本缺陷,请告诉我。

你应该尝试为构造函数使用
public
修饰符,同时使
UserDetail
(内部类)是
静态的
,因为我没有足够的分数,所以我无法发表评论,我对答案有疑问。您知道是哪个更改修复了这个问题,公共修饰符还是使内部类保持静态?如果它是静态修饰符,我对Sergii的问题是,为什么这会产生不同?我们遇到了相同的问题,但只是间歇性地出现。

您是否尝试对构造函数使用
public
修饰符?还可以使
UserDetail
a
static
@Sergii工作正常。谢谢你帮我。