AppEngine 1.2.2. 그래서 같은 수준의 제품을 정의Java App Engine Datastore : 객체의 상속 된 클래스 필드를 쿼리하는 방법은 무엇입니까?
으로 PersistenceManager의 오후 = PMF.get : 다음 새로운 오브젝트과 같이 할
@PersistenceCapable(identityType = IdentityType.APPLICATION, table="Products")
public class Book extends Product {
public Book(String author, String title) {
super(title);
this.author = author;
}
public String getAuthor() {
return author;
}
@Persistent
String author;
}
:
@PersistenceCapable(identityType = IdentityType.APPLICATION, table="Products")
public class Product {
public Product(String title) {
super();
this.title = title;
}
public String getTitle() {
return title;
}
@Persistent
String title;
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key id;
}
내가 파생 클래스의 책과 같이 정의() .getPersistenceManager(); pm.makePersistent (새 책 ("George Orwell", "1984")); 내가 좋아하는 쿼리를 사용하여이 새 개체에 대한 조회 할 수 있습니다
:
검색어 쿼리 = pm.newQuery은 ((+ Book.class.getName "선택") + "여기서 저자 == PARAM"); query.declareParameters ("String param"); 리스트 결과 = (리스트) query.execute ("George Orwell");
Book에 정의 된 'author'필드를 쿼리하기 때문에이 개체가 반환됩니다.
그러나이 작동하지 않습니다
쿼리 쿼리를 = pm.newQuery은 ((+ Book.class.getName "선택") + "여기서 제목 == PARAM"); query.declareParameters ("String param"); 리스트 결과 = (리스트) query.execute ("1984");
필드 'title'이 없다는 예외를 throw합니다.이 경우에도 파생 클래스 Product에 정의되어 있어도 예외입니다.
javax.jdo.JDOUserException: Field "title" does not exist in com.example.Book or is not persistent
NestedThrowables:
org.datanucleus.store.exceptions.NoSuchPersistentFieldException: Field "title" does not exist in com.example.Book or is not persistent
Datastore 쿼리에서 상속 된 클래스의 입력란을 사용할 수없는 것처럼 보입니다.
구문에 변형이 있거나 주석이있는 경우 실제로 가능합니까?