Запрос с Objectify, родитель и дети

1

Я хотел знать, могу ли я сделать запрос к отцу и его сыну в том же запросе.

@Entity
public class Blog {
    @Getter
    @Setter
    @Id
    String id;

    @Getter
    @Setter
    int popularity;
}

@Entity
public class Post {
    @Id
    @Getter
    @Setter
    String id;

    @Getter
    @Setter
    String title;

    @Getter
    @Setter
    long published;

    @Getter
    @Setter
    String locale;

    @Getter
    @Setter
    @Load
    private Ref<Blog> parent; // or @Parent?

}

Это было бы возможно? ->

Тип списка запросов Post> filter locale "Post"> заказ опубликовал "Post"> популярность заказов "Блог"

Благодарю.

Теги:
google-app-engine
google-cloud-datastore
objectify

3 ответа

2

Нет, ты не можешь. Это будет объединение, и механизм приложения не поддерживает соединения в запросах. Вам либо нужно скопировать данные, которые вы хотите фильтровать, на объект Post, либо выполнить 2 отдельных запроса и выполнить заданное пересечение в памяти.

0

Конечно вы можете! сделайте это, добавив поле популярности в сообщение. Вы должны будете обновить это значение каждый день или неделю, если популярность Blog изменится.

Это повторение информации типично и очень распространено в базах данных noSql, не думайте о merise: всегда думайте: "способ получить все данные для чтения (при минимальном количестве запросов)", синхронизация обновлений данных очень распространена в noSql dbs loke cassandra или хранилище данных. Попробуйте прочитать некоторую документацию по этому вопросу

@adevine вы не можете сказать Нет! если вы не знаете

  • 0
    Я специально заявляю, что единственный способ сделать это - скопировать данные, которые вы хотите отфильтровать, в объект Post. Это НЕ объединение, и оно в корне отличается от того, что задавал вопрос.
0

Если вы сделаете поле Ref в поле Post @Parent, вы можете выполнить запрос ancestor() в блоге и получить все (ancestor() включает родительский объект). Тем не менее, вы получите буквально все в этой группе сущностей, если вы не фильтруете по типу ie Post).

Такая микро-оптимизация почти бесполезна. Это не спасет вас от любых денег, и вряд ли вы сохраните какую-либо заметную задержку, особенно если вы @Cache the Blog.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню