有没有办法通过Hibernate 3.2 API获取底层数据库版本的一些信息?我在这里和javadoc找不到相关的位。
答案 0 :(得分:1)
获取数据库引擎的版本是特定于实现的。这意味着没有共享方法来获取版本,因此Hibernate无法真正提供API,因为它没有绑定到任何特定的RDBMS。例如,以下是一些使用来自一些着名的RDBMS的SELECT语句的版本的不同方法:
您可以创建一个报告版本的视图,然后将其添加到您的ORM,然后可以像任何其他Hibernate对象一样进行访问。
答案 1 :(得分:0)
public static void testConnection() {
Session session = null;
try {
session = getSessionFactory().openSession();
session.doWork(connection -> {
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("SELECT VERSION()");
resultSet.next();
System.out.println("DB test: " + resultSet.getString(1));
});
} finally {
if (session != null && session.isOpen()) {
session.close();
}
}
}
答案 2 :(得分:0)
比接受的答案更简单的方法是使用 java.sql.DatabaseMetaData 类:
try (Session session = sessionFactory.openSession()) {
session.doWork(connection -> {
DatabaseMetaData metaData = connection.getMetaData();
System.out.println("Product version: " + metaData.getDatabaseProductVersion());
System.out.println("Major version: " + metaData.getDatabaseMajorVersion());
System.out.println("Minor version: " + metaData.getDatabaseMinorVersion());
});
}
对于我的 MySQL 5.5 实例,输出:
Product version: 5.5.62-log
Major version: 5
Minor version: 5
产品版本与 SELECT VERSION() 返回的值相同;