JPA查询获取实体类型

时间:2016-01-20 00:04:25

标签: google-app-engine jpa jpql datanucleus

我正在尝试编写一个JPA查询来获取特定实体的类型,给定实体的id。我有一个抽象类Account,具体的子类CustomerAccount和AdministratorAccount。 id是Account的一个属性,因此我尝试构造一个查询,以便在给定帐户ID的情况下返回Type(即foo.bar.CustomerAccount)。

我尝试了以下内容:

String sql = "SELECT TYPE(a) from Account a where a.id = :userId";

但这似乎不起作用。有任何想法吗?如果有帮助,我正在使用谷歌应用引擎jpa实现(datanucleus)。

1 个答案:

答案 0 :(得分:0)

首先,FWIW你正在使用谷歌的JPA插件,恰好使用了DataNucleus项目提供的一些古老的罐子。您没有使用DataNucleus JPA。

其次,数据存储“GAE / Datastore”和Google的JPA插件不太可能支持JPQL“TYPE”,因为它们是在插件开发之后出现的。

最后,您可以通过执行

以更有效的方式获得所需的信息
trigger CreateRecord on Account (before insert,before update) {
 List<Account> CreateAcc = new List<Account>();
    For(Account acc:trigger.new)
      {
       acc.Name='abc';
       CreateAcc.add(acc);
      }
    insert CreateAcc;  
 }

因为这也检查了L1 / L2缓存