java - 使用 Key.Id 查询 Google App Engine 数据存储

标签 java google-app-engine jpa

我正在将一个简单的 Java 应用程序部署到 Google App Engine。

我有一个简单的 JPA 实体,其中包含一个 key 作为我生成的 ID。

import javax.persistence.*;    

@Entity
public class MyEntity
{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)    
    private com.google.appengine.api.datastore.Key key;
...

一旦我持久化了这个对象。我可以像这样查看 key 的 ID...

long id = entity.getKey().getId();

您知道我如何使用相同的 ID 取回我的实体吗?像这样的……

Query query = em.createQuery("SELECT e FROM MyEntity e WHERE e.key.id = :myId");
query.setParameter("myId", id);

上述方法无效。我知道我可以通过传入 key 作为参数来取回它,但我想知道我是否可以改用长 ID。

最佳答案

找到解决方案,使用KeyFactory创建一个Key并传入ID。然后在 Key 上查询。

Key key = KeyFactory.createKey(MyEntity.class.getSimpleName(), id);

关于java - 使用 Key.Id 查询 Google App Engine 数据存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3631464/

相关文章:

Java 泛型集合

java - 将图像作为 Base64 字符串从 cms 发送到 Google Cloud 端点

python - 从谷歌云存储流式压缩文件

java - Hibernate OneToMany 映射

java - log4jdbc PreparedStatement.toString()

java - Eclipse 无法在 Ubuntu 14.04 中启动

Java,Glassfish JPA : NoClassDefFoundError: javax/persistence/spi/PersistenceUnitInfo (JDK6/7 only)

date - JPA 标准 : Using order-by clause by truncating date

从范围返回模式字符串的java方法

javascript - GAE Channel API - 通过 Javascript 检查套接字是否处于事件状态