正确的答案是根本不做任何引用。 ORMLite自动引用所有字段和表名。这肯定非常依赖于数据库,但 H2 是我的主要测试数据库,所以我确信它在我所知道的所有情况下都能正常工作。至于为什么它对你不起作用,我无法评论。如果您发布 ORMLite 生成的查询,我可能会看到问题。
推荐的模式是将要在查询中使用的任何列定义为公共字符串。例如:
protected static class Reserved {
public static final String FIELD_NAME_GROUP = "group";
...
@DatabaseField(columnName = FIELD_NAME_GROUP)
String group;
...
}
然后,当您查询时,然后使用FIELD_NAME_GROUP
不带任何引号的方法并执行以下操作:
QueryBuilder<Reserved, Integer> sb = dao.queryBuilder();
sb.where().eq(Reserved.FIELD_NAME_GROUP, "something");
...
我在几个单元测试中对此有很好的覆盖。请参阅我在所有受支持的数据库类型上运行的以下测试。在JdbcBaseDaoImplTest.java 单元测试中查找testCreateReserverdTable()
和testCreateReserverdFields()
方法及其关联的类。