在基于Appengine Java的应用程序中升级Objectify时,我遇到了一个问题,这里有一个解决方案,我试图解决这个问题,但不确定它有多好?
问题是在旧版本(Objectify 4.0b2(中,查询返回了对DB对象的引用。
Ref<EntityDO> refEntity = ofy().load().type(EntityDO.class).id(entityId);
这曾经是一个有效的代码,作为of((.load((.type((.id((,用于返回对DB实体的引用。
在将Objectify升级到更高版本后,它已更改为
LoadResult<EntityDO> entityDO = ofy().load().type(EntityDO.class).id(entityId);
现在,我使用此代码将LoadResult<gt;对象引用<gt;对象
public static <T> Ref<T> getRef(LoadResult<T> loadResult) {
if (loadResult != null) {
T obj = loadResult.now();
if (obj != null) {
return Ref.create(obj);
}
}
return null;
}
有了这个,我就可以得到Ref<gt;对象成功。我在这里担心的是,这是一个很好的方法,在这里创建Ref<gt;对象,我们从DB中获取对象?
谢谢Aadhaar
这有点奇怪。你可以称之为
Ref.create(Key.create(EntityDO.class, entityId))
但我猜这在语义上并不是你所期望的?老实说,我记不清4.0b2(7年前(到底做了什么,但在某个时候,Objectify的Ref
从一个直接引用实体的对象变成了一个Key
的持有者,能够在当前会话中查找值。
如果不了解更多关于你的应用程序的信息,很难提供太多建议。但是,如果您只需要一个Ref
,请从Key
创建它。