【发布时间】:2012-09-14 09:02:07
【问题描述】:
我有以下课程:
@Entity
@Table(name = "clients")
public class Client extends Model {
@Id
public int id;
@Formula(select = "inv.some_data",
join = "left join (select 1 as some_data) as inv")
public int someData;
public static Finder<String, Client> find =
new Finder<String, Client>(String.class, Client.class);
public static int countClientsWithData() {
return Client.find.where().gt("someData", 0).findRowCount();
}
}
它有someData 字段(play 框架会自动生成getter 和setter)。而且countClientsWithData 在where 子句中使用了这个字段。现在如果我这样做了
int count = Client.countClientsWithData();
它会在尝试执行查询时抛出NullPointerException
select count(*) from clients t0 where inv.some_data > ?
看起来 findRowCount 无法识别 @Formula 注释中的连接。有关如何解决此问题的任何想法?
更新问题:将问题缩小到findRowCount 通话。
【问题讨论】:
-
这是一个错误。暂时使用 zaffargachal 所说的话。
-
不是你的问题的答案,只是我的看法,但如果你真的想使用 SQL,那么你应该使用 iBatis/MyBatis。如果你想使用 JPA,那么使用 JPA 并避免 SQL,避免 SQL,避免 SQL。
标签: java database orm playframework-2.0 ebean