Tôi đang sử dụng phiên bản phát triển cục bộ của việc triển khai JDO của App Engine. Khi tôi truy vấn một đối tượng có chứa các đối tượng khác như các trường được nhúng, các trường được nhúng được trả về là rỗng.Trường JDO được nhúng không được truy vấn bằng truy vấn
Ví dụ, cho phép nói đây là đối tượng chính mà tôi đang kiên trì:
@PersistenceCapable
public class Branch {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
@Persistent
private String name;
@Persistent
private Address address;
...
}
và điều này đối tượng nhúng của tôi:
@PersistenceCapable(embeddedOnly="true")
public class Address {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
@Persistent
private String street;
@Persistent
private String city;
...
}
đoạn mã sau không lấy đối tượng nhúng:
PersistenceManager pm = MyPersistenceManagerFactory.get().getPersistenceManager();
Branch branch = null;
try {
branch = pm.getObjectById(Branch.class, branchId);
}
catch (JDOObjectNotFoundException onfe) {
// not found
}
catch (Exception e) {
// failed
}
finally {
pm.close();
}
Có ai có giải pháp cho việc này không? Làm thế nào tôi có thể lấy đối tượng Branch cùng với trường Address được nhúng của nó?
Cảm ơn câu trả lời nhanh chóng! Tôi sẽ kiểm tra điều này và cho bạn biết nếu nó hoạt động. – Chania
Nếu một trường nằm trong nhóm tìm nạp hiện hoạt thì rõ ràng nó nên được tìm nạp. Nếu bạn nói nó không phải là sau đó tại sao không cung cấp một testcase đơn giản và báo cáo nó tại http://code.google.com/p/datanucleus-appengine/issues/list Không báo cáo nó có khả năng có nghĩa là không ai tham gia vào dự án sẽ biết về nó – DataNucleus
Tôi không chắc đây có phải là lỗi hay một phần của đặc tả JDO hay không. Tôi nhớ đọc ở đâu đó rằng việc tải các trường nhúng vào trong các thông số JDO, nhưng tôi không thể tìm thấy nó ngay bây giờ. – Cengiz