我目前正在使用Gwt CellTable,通过RPC调用绑定到我的GAE/Objectify后端.
现在好了!:-)
然后我想对列进行排序,所以我看了http://code.google.com/intl/it-IT/webtoolkit/doc/latest/DevGuideUiCellTable.html#columnSorting
Async Remote排序部分很好地展示了如何排序到我的AsyncDataProvider但是...如何检索用户想要排序的列的名称?
它显示了这段代码: ColumnSortList sortList = table.getColumnSortList();
但是如何从中获取String名称呢?我只想知道"姓氏"或"soldDate",列所绑定的字段的名称!然后我将它传递给我的rpc服务,并使用它来排序数据服务器端query(...).order(<field_name>)
我错过了什么吗?
UPD:这里有趣的东西:http://groups.google.com/group/google-web-toolkit/browse_thread/thread/77a0eaf8086218a6/effb8d3abe69270b#effb8d3abe69270b
我有一个现有的数据存储实体,如下所示:
@Data
@Entity
public class Data
{
@Id @Index long id;
long subId;
boolean expired;
boolean claimed;
}
Run Code Online (Sandbox Code Playgroud)
我需要根据subId过滤数据,过期声明的字段,所以我使用datastore-indexes.xml创建了一个多索引,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<datastore-indexes autoGenerate="true">
<datastore-index kind=“Data” ancestor="false">
<property name=“subId” direction="asc" />
<property name="expired" direction="asc" />
<property name="claimed" direction="asc" />
</datastore-index>
</datastore-indexes>
Run Code Online (Sandbox Code Playgroud)
该实体完全是一个新实体,下面是添加到实体类中的两个新记录:
Column : Data
id : 1
subId : 1
expired : false
claimed : false
id : 2
subId : 1
expired : false
claimed : false
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用以下逻辑查询数据实体时,我确实得到空数据:
List<Data> data = ofy.load().type( Data.class )
.filter( "subId = ", …Run Code Online (Sandbox Code Playgroud) 我有一个实体
class Foo {
public String bar;
}
Run Code Online (Sandbox Code Playgroud)
我想将“bar”重命名为“somethingElse”。并计划使用 Objectify 的 @AlsoLoad 注释来实现这一目标(我已经在使用 Objectify 进行持久化)。所以像这样:
class Foo {
@AlsoLoad("bar")
public String somethingElse;
}
Run Code Online (Sandbox Code Playgroud)
但任何形式的查询:
final Query<Foo> query = OfyService.ofy().load().type(Foo.class)
.filter("somethingElse", "someValue");
Run Code Online (Sandbox Code Playgroud)
仅检索自重命名以来已保存的实体。任何较旧的实体都将被忽略。
重命名实体字段以便我可以通过单个查询返回所有记录的最佳实践是什么?
如果我将实体保存到数据存储区,然后在通过它的密钥加载实体后,程序是否会等待并确保强一致性?
thing.setValue(newValue);
ofy().save().entity(thing).now();
Thing updatedThing = ofy().load().key(thingKey).now();
Run Code Online (Sandbox Code Playgroud)
是否updatedThing包含新值?
当我想要更新实体时,这是一种确保案例强一致性的好方法吗?
我正在制作P2P媒体共享功能,用户可以与他人共享文件(图像,mp3等).当用户与另一个共享文件时,我只需向他们发送该文件的链接即可.链接看起来像:
http://www.domain.com/file?q=unique_key
现在,unique_key必须是字母数字且不易猜测,所以我打算使用文件记录的编码密钥.
这在我早期的Python GAE应用程序中很简单,但在我的新Java应用程序中,我无法获得此Key值,我得到的是一个Long(数字)ID.
我的实体有一个名为ID的字段,它是Long,但在我的GAE管理控制台中有一个实体编码的密钥,它是字母数字,我希望这对我数据库中的每条记录都是唯一的.那么如何访问呢?
我正在使用Objectify,当我创建这样的新密钥时
Key myKey = new Key(FileEntity.class,entityID);
myKey是一个包含一些文本的字符串,但它是我正在寻找的uniqye alpha数字id.
对不起我的模糊问题,请帮忙.
似乎Objectify不支持数据存储区CompositeFilter.但客观化确实需要Filter.那么现在我如何AND在客体化中实现复合滤波器?我正在从Datanucleus转移,我需要查询
"SELECT f.healthy FROM Food f WHERE f.fan = :userid AND flavor = : flavor";
Run Code Online (Sandbox Code Playgroud)
所以类型是Food.class和字段是fan和flavor
google-app-engine objectify google-cloud-endpoints google-cloud-datastore
我在java运行时使用objectify on appengine.我也通过@Cached注释为几个实体使用memcache.我的问题是在将对象放入数据存储区时对象的行为.放置具有@Cached注释的实体时,是否更新了memcache?或者该实体的任何现有缓存数据现在与数据存储区不同步.当我将一个对象放入数据存储区时,我想更新内存缓存,但是我不知道objectify默认是否这样做,或者我是否需要自己编写.如果更新了内存缓存,那么我的数据的到期时间(或没有到期时间)要高得多.仅供参考我不使用交易.