1
我有两个类之间的父子关系,但子对象从不存储。我得到一个警告:如何使用来自Scala的JDO在GAE上存储子对象
“org.datanucleus.store.appengine.MetaDataValidator checkForIllegalChildField:无法验证关系net.vermaas.kivanotify.model.UserCriteria.internalCriteria”
但我不清楚为什么这个发生。已经尝试了几种替代品,但没有运气
父类是“UserCriteria”,它具有“Criteria”列表作为子项。
的类定义如下(斯卡拉):为什么不存储
class UserCriteria(tu: String, crit: Map[String, String]) extends LogHelper {
@PrimaryKey
@Persistent{val valueStrategy = IdGeneratorStrategy.IDENTITY}
var id = KeyFactory.createKey("UserCriteria", System.nanoTime)
@Persistent
var twitterUser = tu
@Persistent
var internalCriteria: java.util.List[Criteria] = flatten(crit)
def flatten(crits: Map[String, String]) : java.util.List[Criteria] = {
val list = new java.util.ArrayList[Criteria]
for (key <- crits.keySet) {
list.add(new Criteria(this, key, crits(key)))
}
list
}
def criteria: Map[String, String] = {
val crits = mutable.Map.empty[String, String]
for (i <- 0 to internalCriteria.size-1) {
crits(internalCriteria.get(i).name) = internalCriteria.get(i).value
}
Map.empty ++ crits
}
// Stripped the equals, canEquals, hashCode, toString code to keep the code snippet short...
}
@PersistenceCapable
@EmbeddedOnly
class Criteria(uc: UserCriteria, nm: String, vl: String) {
@Persistent
var userCriteria = uc
@Persistent
var name = nm
@Persistent
var value = vl
override def toString = {
"Criteria name: " + name + " value: " + value
}
}
任何想法的孩子的?或者为什么我收到错误信息?
感谢, 吕