Тот же запрос работает в Hibernate ORM с PostgreSQL
Но PostgreSQL - это база данных SQL, MongoDB - это база данных NoSQL. Hibernate OGM - это средство для добавления Hibernate ORM в базы данных NoSQL. «(H) SQL» для OGM ограничен (см. Ниже).
Вы не говорите, на чем развернуто ваше приложение. Я использую WildFly 12.0.0.Final. У меня был OGM с MongoDB, работающей над версией 11 и 12.
.
entityManager.getTransaction () начинается ();
Я использую контейнер (WildFly) для обработки транзакций. Аннотируйте мой EJB.
@TransactionManagement(TransactionManagementType.CONTAINER)
Я не думаю, что вы можете использовать (H) SQL как таковой с Hiberate OGM, но:
Использовать JPQL - пока только для простых запросов
Использовать собственный запрос NoSQL, отображающий результат как управляемые объекты
Использование поисковых запросов Hibernate - преимущественно полнотекстовых запросов
В документации сказано:
В частности, обратите внимание, что не поддерживается:
объединение перекрестных сущностей
JPQL-функции, в частности функции агрегирования, такие как count
Обновление и удаление запросов JPQL
Один из моих запросов:
Query query = mongoDBEntityManager.createQuery("FROM FoodsCosmeticsMedicines f WHERE f.ean = :ean")
.setParameter("ean", ean);
Сущность (@Expose для JSON)
@Entity(name = "FoodsCosmeticsMedicines")
@Indexed
@Table(name = "foodsCosmeticsMedicines")
public class FoodsCosmeticsMedicines implements Serializable {
// Arrays of Objects
@Expose(deserialize = true, serialize = true)
@Embedded
ProductCharacteristics productCharacteristics;
@Expose(deserialize = true, serialize = true)
@Embedded
CalcNutrition calcNutrition;
@Expose(deserialize = true, serialize = true)
@Embedded
Nutrients nutrients;
@Expose(deserialize = true, serialize = true)
@Embedded
Enumbers enumbers;
@Expose(deserialize = true, serialize = true)
@Embedded
ChemicalsMineralsVitamins chemicalsMineralsVitamins;
@Expose(deserialize = true, serialize = true)
@Embedded
Lifestyle lifestyle;
.....
}
Почему вы используете JOIN?
С MySQL я использую Hibernate в качестве своего ORM, я бы использовал аннотации для отображения отношений с такими объектами, как:
@OneToOne(cascade = CascadeType.ALL, mappedBy = "product", fetch = FetchType.LAZY)
private UriEntity uri;
entityManager.getTransaction () фиксации ();. * * Тысяча пятьдесят-дв
Это не имеет значения, так как все, что вы сделали, это прочитали. Может быть, вы исключили персистирование?
Я уверен, что вы прочитали документацию. Я нашел все ответы на проблемы, с которыми я столкнулся здесь:
Hibernate OGM 5.3.1. Финал: Справочное руководство