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 的问题是为什么这会有所不同?我们遇到了同样的问题,但只是间歇性的。
我在 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 的问题是为什么这会有所不同?我们遇到了同样的问题,但只是间歇性的。