2011-08-23 24 views
7

Câu hỏi giả.Lấy khóa của Objectify Entity

Tôi tạo đối tượng POJO Objectify của mình (ví dụ: "Danh mục") và lưu giữ nó.

Sau đó, tôi truy xuất thông qua truy vấn.

Tôi muốn sử dụng nó trong mối quan hệ một-một-có thể, ví dụ: muốn đặt danh mục của tôi thành một hoặc nhiều "Sản phẩm".

tôi sẽ có điều này trong "sản phẩm" của tôi mã 's: Key<Categoria> categoria;

Vậy câu hỏi là: làm thế nào tôi có thể tìm thấy chìa khóa thực thể lấy của tôi để cài đặt nó trong sản phẩm của tôi?

Trả lời

9

Tôi thường thêm một phương pháp bổ sung:

@Transient 
Key<Categoria> getKey() { 
    return Key.create(Categoria.class, id); 
} 

và sử dụng nó, nơi nó cần thiết:

anCategoria.getKey() 
+3

Trong Objectify 4 nó cho tôi một lỗi: constructor đó không hiển thị. – Tom

+2

'Key.create (Categoria.class, id)' - hơi thuận tiện hơn so với hàm tạo. – stickfigure

+0

cảm ơn, được cập nhật lên Objectify 4 –

13

Đối với làm thành khách quan 4 sử dụng:

public Key<Foo> getKey() { 
    return Key.create(Foo.class, id); 
} 

Hoặc nếu đơn vị có một @Parent

public Key<Bar> getKey() { 
    return Key.create(parentKey, Bar.class, id); 
} 
+0

Người dùng cần lưu ý rằng nếu @Parent được xác định, khóa cha phải được sử dụng để tạo khóa Bar. – Dula

+0

Có cách nào để lấy Khóa mà không viết mã mới cho mỗi Thực thể không? – Raymond

1

Lớp chính trong làm thành khách quan 4 có phương pháp này:

public static <T> Key<T> create(T pojo) 

như vậy, nếu bạn đã có đọc những thực thể (gọi tắt là category trong ví dụ này) từ kho dữ liệu, bạn có thể chỉ cần gọi

product.categoria = Key.create(category); 
Các vấn đề liên quan