我有一个实现接口的类。为什么arraylist内容没有存储在数据库中?以下是一些用于说明问题的代码。
班级
@Entity
public class MyClass implements MyInterface {
@Id
@Indexed
public String id;
public String someField;
public MyClass(String id, String someField){
this.id = id;
this.someField = someField;
}
}
界面
public interface MyInterface {
@Embedded
public List<String> mylist = new ArrayList<String>();
}
测试代码
@Test
public void test() {
testInheritance();
}
public void testInheritance() {
MyClass myClass = new MyClass("test", "someField");
myClass.myList.add("wow");
MyClassDao dao = new MyClassDao();
dao.save(myClass);
}
public class MyClassDao extends BasicDAO<MyClass, ObjectId> {
public MyClassDao() {
super(MyClass.class, MorphiaManager.getMongoClient(), MorphiaManager.getMorphia(), MorphiaManager.getDB().getName());
}
}
DB中的结果
{
"_id" : "test",
"className" : "gr.iti.mklab.simmo.util.MyClass",
"someField" : "someField"
}
答案 0 :(得分:0)
接口只能声明方法签名和常量(static final
变量)。您想要使用的是一个从中继承的抽象基类。
您的代码中的其他观察结果:
id
应为ObjectId
类型,并自动编入索引,您不需要@Indexed
private
或protected
,您需要为其提供getter和setter