Почему createQuery () в javax.persistence.EntityManager не работает с атрибутом верхнего регистра? - PullRequest
1 голос
/ 19 марта 2012

Я столкнулся с поведением 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: MyDatabaseTableBE в строке 4.

Единственное, что я изменил, это прописная буква:

 // Corresponding BE, with changed capitalisation
...
public static final String FOO = "foo";
...
public String getFoo()
...
public void setFoo(final String fOO)
...

И это сработало без исключения.

Почему не работала первая версия (со вторым и третьим символом в верхнем регистре)?

...