String nativeSql = "Some random non-sql stuff";
Session sess = sessionFactory.openSession();
List <?> result = sess.createSQLQuery(nativeSql).list();


万一,如果nativeSql请求不是有效的请求,如何捕获本机异常(例如:PSQLException)?

最佳答案

Hibernate会将所有SQLException包装到org.hibernate.JDBCException中。因此,您想捕获此Exception类型。如果您明确需要访问实际的PSQLException,则可以通过getSQLException()方法检索它:

try {
    String nativeSql = "Some random non-sql stuff";
    Session sess = sessionFactory.openSession();
    List <?> result = sess.createSQLQuery(nativeSql).list();
} catch (JDBCException e) {
    SQLException sqlException = e.getSQLException;
    if (sqlException instanceof PSQLException) {
        PSQLException psqlException = (PSQLException) sqlException;
        // ... work with psqlException ...
    }
}

10-01 03:19