正しい答えは、まったく引用しないことです。 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()
メソッドとそれらに関連付けられたクラスを探します。