Hibernate代码在获取sessionfactory对象时出现异常
这是我的密码。在线Hibernate代码在获取sessionfactory对象时出现异常,hibernate,Hibernate,这是我的密码。在线 private static SessionFactory factory; public static void main(String[] args) { try{ factory = new Configuration().configure().buildSessionFactory(); }catch (Throwable ex) { System.err.println(
private static SessionFactory factory;
public static void main(String[] args) {
try{
factory = new Configuration().configure().buildSessionFactory();
}catch (Throwable ex) {
System.err.println("Failed to create sessionFactory object." + ex);
throw new ExceptionInInitializerError(ex);
}
ManageEmployee ME = new ManageEmployee();
其抛出方式为错误:
factory = new Configuration().configure().buildSessionFactory();
这是根据谷歌建议的新代码
有人能帮我吗?我完全不熟悉Hibernate。这不是配置代码问题。这段代码应该运行良好
factory=newconfiguration().configure().buildSessionFactory()代码>
此类org.hibernate.cache.infinispan.StrategyRegistrationProviderImpl
它用于与缓存集成,驻留在相应版本的hibernate infinispan xxx.jar
中
您需要从添加jar到类路径
或者您可以从Hibernate配置中删除infinispan缓存配置,例如从Hibernate.cfg.xml
中删除
更新
new Configuration().configure().buildSessionFactory()
code不推荐用于Hibernate 4。Hibernate 5并不反对使用它。有趣的是,在修复该错误后,配置代码的第二个变体将无法工作:
错误的原因
org.hibernate.boot.registry.selector.StrategyRegistrationProvider:Provider org.hibernate.cache.infinispan.StrategyRegistrationProviderImpl未找到
无法加载类org.hibernate.cache.infinispan.StrategyRegistrationProviderImpl
您可以通过在配置代码之前添加此代码来检查此类
public static void main(String[] args) {
try{
Configuration configuration = new Configuration().configure();
configuration.configure("hibernate.cfg.xml");
StandardServiceRegistryBuilder ssrb = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties());
ServiceRegistry serviceRegistry = ssrb.build();
setFactory(configuration.buildSessionFactory(serviceRegistry));
}catch (Throwable ex) {
System.err.println("Failed to create sessionFactory object." + ex);
throw new ExceptionInInitializerError(ex);
}
您有一个带有main()
方法的控制台应用程序,在WEB-INF/lib
中有一个jar,这很奇怪 我的hibernate版本是5.1.0。我已经看到了许多关于代码工厂=新配置()的答案;这已被弃用,我提到的新行现在正在使用。我在WEB-INF下的lib文件夹中已经有了这个jar。@PrithiviRaj您需要在类路径中有org.hibernate.cache.infinispan.StrategyRegistrationProviderImpl
类。或者您需要找到一些东西,添加infinispan
缓存并将其删除。
public static void main(String[] args) {
try{
Configuration configuration = new Configuration().configure();
configuration.configure("hibernate.cfg.xml");
StandardServiceRegistryBuilder ssrb = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties());
ServiceRegistry serviceRegistry = ssrb.build();
setFactory(configuration.buildSessionFactory(serviceRegistry));
}catch (Throwable ex) {
System.err.println("Failed to create sessionFactory object." + ex);
throw new ExceptionInInitializerError(ex);
}
URL url = Thread.currentThread().getContextClassLoader()
.getResource(
"org/hibernate/cache/infinispan/StrategyRegistrationProviderImpl.class");
System.out.println(url);