Хранилище

已查看 19 次
跳至第一个未读帖子

Magic

未读,
2010年7月26日 10:44:562010/7/26
收件人 Google App Engine for Java on Russian
Есть такой класс Tree

@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key key;

@Persistent
private Tree parent;
@Persistent
private String name;
@Persistent
private boolean isRoot;

вопрос примерно такой как забрать его из хранилища по parent?

PersistenceManager pm = PMF.get().getPersistenceManager();

Tree parent = GetById(pm, parentId);

String queryString = "select from " + Tree.class.getName();
if (parent == null)
queryString += " where isRoot == true";
else {
queryString += " where parent == inParent";
}

Query query = pm.newQuery(queryString);
query.declareParameters("ContentFolderData inParent");
List<Tree> result = (List<Tree>)query.execute(parent);

return result;

тут уже есть костыль:
if (parent == null)
queryString += " where isRoot == true"; ибо при парент нул - выдает
ошибку

теперь если у парента нет чайлдов выдает
org.datanucleus.store.appengine.FatalNucleusUserException "Key of
parameter value does not have a parent."

я знаю, что если сделать childs а не parent все будет работать - но
меня это не устраивает, я хочу загружать только 1 уровень и все что
выше, а не все, что ниже.

回复全部
回复作者
转发
0 个新帖子