我正在构建一个无需使用JDO即可与google appengine数据存储集成的android应用。
我正在尝试建立一个端点,该端点将允许我访问数据存储中的数据。我正在编写的函数在下面,但是我遇到了一个奇怪的问题,尽管将此代码放入了端点java类中。
我得到的错误是Cannot Resolve Method getEntityManager()
在我在线上看到的每个示例中,都调用了此函数。 -因此必须有一种方法可以使它正常工作,否则我必须做一些愚蠢的事情。
我想念什么?我该如何解决
@Api(name = "getPostsApi", version = "v1", namespace = @ApiNamespace(ownerDomain = "endpoints.myModule.myCo.com",
ownerName = "endpoints.myModule.myCo.com", packagePath=""))
public class GetPostsEndpoint {
/**
* This method lists all the entities inserted in datastore.
* It uses HTTP GET method and paging support.
*
* @return A CollectionResponse class containing the list of all entities
* persisted and a cursor to the next page.
*/
@SuppressWarnings({"unchecked", "unused"})
@ApiMethod(name = "GetPostsEndpoint")
public CollectionResponse<NewPostBean> listStuff(
@Nullable @Named("cursor") String cursorString,
@Nullable @Named("limit") Integer limit) {
EntityManager mgr = null;
Cursor cursor = null;
List<NewPostBean> execute = null;
try {
mgr = getEntityManager(); // <---- Breaks on this line
//Query query = mgr.createQuery("select from Stuff as Stuff");
// limit =1;
//execute = (List<NewPostBean>) query.getResultList();
//cursor = JPACursorHelper.getCursor(execute);
//for (NewPostBean obj : execute)
// ;
//} finally {
// mgr.close();
//}
return CollectionResponse.<NewPostBean>builder().setItems(execute).setNextPageToken(cursorString).build();
}
}
最佳答案
当我查看here时,我看到他们实际上是通过创建此类来获得实体管理器的:
public final class EMF {
private static final EntityManagerFactory emfInstance =
Persistence.createEntityManagerFactory("transactions-optional");
private EMF() {}
public static EntityManagerFactory get() {
return emfInstance;
}
}
然后,他们调用EMF.get()以获取实体管理器。我只是用它,它的工作原理。您发现什么代码会像这样突然调用“ getEntityManager”?根据您发布的代码,getEntityManager似乎根本没有定义