Sql 如何通过Hibernate获取数据库版本?
有没有办法通过Hibernate 3.2 API获取底层数据库版本的一些信息?我在这里和javadoc中都找不到相关的位 获取数据库引擎的版本是特定于实现的。这意味着没有获取版本的共享方法,因此Hibernate不能真正提供API,因为它没有绑定到任何特定的RDBMS。例如,以下是从一些著名的RDBMS获取SELECT语句版本的几种不同方法:Sql 如何通过Hibernate获取数据库版本?,sql,database,hibernate,Sql,Database,Hibernate,有没有办法通过Hibernate 3.2 API获取底层数据库版本的一些信息?我在这里和javadoc中都找不到相关的位 获取数据库引擎的版本是特定于实现的。这意味着没有获取版本的共享方法,因此Hibernate不能真正提供API,因为它没有绑定到任何特定的RDBMS。例如,以下是从一些著名的RDBMS获取SELECT语句版本的几种不同方法: Oracle:从v$version中选择* SQL Server:选择@@version MySQL:选择版本() 您可以创建一个报告版本的视图,然
- Oracle:从v$version中选择*李>
- SQL Server:选择@@version
- MySQL:选择版本()
您可以创建一个报告版本的视图,然后将其添加到ORM中,ORM将作为任何其他Hibernate对象进行访问。一种比公认答案更简单的方法是使用java.sql.DatabaseMetaData类:
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();
}
}
}
try(Session Session=sessionFactory.openSession()){
会话.工作(连接->{
DatabaseMetaData=connection.getMetaData();
System.out.println(“产品版本:+metaData.getDatabaseProductVersion());
System.out.println(“主版本:+metaData.getDatabaseMajorVersion());
System.out.println(“次要版本:+metaData.getDatabaseMinorVersion());
});
}
对于我的MySQL 5.5实例,这将输出:
Product version: 5.5.62-log
Major version: 5
Minor version: 5
产品版本与SELECT version()返回的值相同 非常感谢您提供如此详细的解释。我将尝试你提出的方法。应该很容易,因为我只需要支持Oracle和MySQL。