Hibernate FAQ – часто задаваемые вопросы по Hibernate


Вопрос: Что такое JPA?
Ответ:

Вопрос: Как установить лимит для запроса в HQL?
Ответ:
Limit was never a supported clause in HQL. You are meant to use setMaxResults().

Вопрос: Как правильно закрывать JPA EntityManager?
Ответ:
Java Notepad: How to close a JPA EntityManger in web applications

Вопрос: Можно ли использовать EntityManager как синглтоны?
Ответ: Не рекомендуется.

Вопрос: С чем могут быть связаны подобные ошибки?
WARN  [JDBCExceptionReporter] SQL Error: 942, SQLState: 42000
ERROR [JDBCExceptionReporter] ORA-00942: таблица или представление пользователя
 не существует
ERROR [STDERR] 2013-11-19 16:30:22,534 [ WARN] unable to drop temporary id table
 after use [ORA-00942: таблица или представление пользователя не существует
] at org.hibernate.hql.ast.exec.AbstractStatementExecutor$2.doWork
(AbstractStatementExecutor.java:157)
ERROR [STDERR] javax.persistence.PersistenceException: 
org.hibernate.exception.SQLGrammarException: could not insert/select ids 
for bulk delete
...
ERROR [STDERR] Caused by: org.hibernate.exception.SQLGrammarException: could 
not insert/select ids for bulk delete
...
ERROR [STDERR] Caused by: java.sql.SQLException: ORA-00942: таблица или 
представление пользователя не существует
...
ARN  [JDBCExceptionReporter] SQL Error: 1400, SQLState: 23000
ERROR [JDBCExceptionReporter] ORA-01400: невозможно вставить NULL в (...)
ERROR [STDERR] javax.persistence.EntityExistsException: 
org.hibernate.exception.ConstraintViolationException: could not insert: [...]
...
ERROR [STDERR] Caused by: org.hibernate.exception.ConstraintViolationException: 
could not insert: [...]
...
ERROR [STDERR] Caused by: java.sql.SQLException: ORA-01400: невозможно вставить 
NULL в (...)
...
ERROR [STDERR] java.util.concurrent.ExecutionException: 
javax.persistence.EntityExistsException: 
org.hibernate.exception.ConstraintViolationException: could not insert: [...]
...
ERROR [STDERR] Caused by: javax.persistence.EntityExistsException: 
org.hibernate.exception.ConstraintViolationException: could not insert: [...]
...
ERROR [STDERR] Caused by: org.hibernate.exception.ConstraintViolationException: 
could not insert: [...]
...
ERROR [STDERR] Caused by: java.sql.SQLException: ORA-01400: невозможно вставить 
NULL в (...)

Ответ:
Как вариант с тем что используется неверный диалект в persistence.xml, например:
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/> 
вместо:
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>

To be continued...