//take from current EntityManager current DB Session
Session session = (Session) em.getDelegate();
//Hibernate's SessionFactoryImpl has property 'getDialect', to
//access this I'm using property accessor:
Object dialect =
org.apache.commons.beanutils.PropertyUtils.getProperty(
session.getSessionFactory(), "dialect");
//now this object can be casted to readable string:
if( dialect.toString().contains("Oracle")){
....
4条答案
按热度按时间trnvg8h31#
最后我找到了方法--但它是Hibernate特有的。
nimxete22#
另一条路稍微短一点:
jvlzgdj93#
下面是另一个针对Hibernate的解决方案。它仍然很难看,因为它涉及到向下转换,但它没有使用反射:
zi8p0yeb4#
服务器升级后,遗留java系统代码停止工作,并开始返回错误消息“java.lang.NoSuchMethodException:类'class org. hib.internal. SessionFactoryImpl'“上的属性'dialect'未知。因此,为了更正该问题并将可能的影响降到最低,进行了如下调整:
之前:
之后:
注意:更新jboss/wildfly后开始出现错误。