在我的GWT 2.4.0应用程序中,我使用RequestFactory和Hibernate / JPA。我有一个实体Agent
,它有很多Administrators
到@OneToMany
的关系。此关联已加载LAZY
。因此,当调用查找服务时,未加载代理的管理员,这在大多数情况下是期望的行为。
但是,我希望能够通过使用with方法在客户端代码上触发requestFactory请求时指示我希望代理的管理员返回。所以我的客户端代码看起来像:
RequestContext.findAgent(agentId).with("administrstors").fire()
和我的服务器端服务看起来像这样:
public Agent findAgent(Long id) {
return getEntityManager().createQuery("SELECT a" +
" FROM Agent" +
" WHERE a.id=:id", Agent.class)
.setParameter("id", id)
.getSingleResult();
}
我希望能够确定是否使用了with方法来发送请求。我需要自定义JPA查询,以便在客户端使用的情况下加载代理的管理员。有没有办法在服务器端访问通过RequestFactory发出的请求的详细信息?
如果我知道客户端代码需要代理tehn的管理员,我的JPA查询将如下所示:
public Agent findAgent(Long id) {
return getEntityManager().createQuery("SELECT a" +
" FROM Agent a LEFT JOIN a.administrators admin" +
" WHERE a.id=:id", Agent.class)
.setParameter("id", id)
.getSingleResult();
}
任何见解都将受到赞赏。提前谢谢。
答案 0 :(得分:0)
遗憾的是,这是不可能的;除了with()
。
仅供参考,2年前在Google Wave中讨论过(我有一个本地备份副本,但在网络上无处可寻),有几个提案(可选Set<String>
作为最后一个提交服务方法的参数 - 您的findAgent
方法 - 或线程 - 本地属性列表)
虽然没有这样的东西已经实现,但回想起来我不确定它应该:明确地将信息作为参数传递给你的方法是更明确/更少 magic 。