理解したい javax.persistence.EntityManager の動作に遭遇しました。
次のようなコードがありました。
1 // Query Execution
2 EntityManager emext;
3 String query = "SELECT obj FROM MyDatabaseTableBE obj obj.FOO = :fooName)";
4 Query q = emext.createQuery(query);
5 // Corresponding BE
6 ...
7 public static final String FOO = "fOO";
8 ...
9 @AttributeMetadata(attributeNature = AttributeNature.REGULAR)
10 @SearchAttributeMetadata(searchable = false)
11 private String foo;
12 ...
13 public String getFOO() {
14 return foo;
15 }
16 ...
17 public void setFOO(final String foo) {
18 this.foo = foo
19 }
20 ...
次の例外をスローします:プロパティを解決できませんでした: fOO of:行 4 の MyDatabaseTableBE。
私が変更した唯一のことは大文字化でした:
// Corresponding BE, with changed capitalisation
...
public static final String FOO = "foo";
...
public String getFoo()
...
public void setFoo(final String fOO)
...
そして、それは例外なく機能しました。
最初のバージョン (2 番目と 3 番目の文字が大文字) が機能しなかったのはなぜですか?