Java StandardServiceRegistryBuilder不工作
} 我正在使用Hibernate4.3。我收到一条错误消息“当未设置'hibernate.dialogue'时,对方言解析信息的访问不能为null”。StandardServiceRegistryBuilder有问题。它是首选的,因为ServiceRegistryBuilder已被弃用。请给我提供这个问题的解决方案 我的hibernate.cfg.xml文件如下所示-Java StandardServiceRegistryBuilder不工作,java,spring,hibernate,Java,Spring,Hibernate,} 我正在使用Hibernate4.3。我收到一条错误消息“当未设置'hibernate.dialogue'时,对方言解析信息的访问不能为null”。StandardServiceRegistryBuilder有问题。它是首选的,因为ServiceRegistryBuilder已被弃用。请给我提供这个问题的解决方案 我的hibernate.cfg.xml文件如下所示- public class HibernateSession { private static final SessionFac
public class HibernateSession {
private static final SessionFactory sessionFactory = buildSessionFactory();
private static StandardServiceRegistry serviceRegistry;
private static SessionFactory buildSessionFactory() {
try {
Configuration configuration = new Configuration();
configuration.configure("hibernate.cfg.xml");
StandardServiceRegistryBuilder serviceRegistryBuilder = new StandardServiceRegistryBuilder();
serviceRegistry = serviceRegistryBuilder.build();
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
return sessionFactory;
} catch (Throwable ex) {
System.err.println("Initial SessionFactory creation failed!" + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/company_db
根
根
1.
org.hibernate.dialogue.mysqldialogue
org.hibernate.cache.internal.NoCacheProvider
线
真的
您可能需要添加以下内容:
<!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/company_db</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- Drop and re-create the database schema on startup -->
<!-- <property name="hbm2ddl.auto">create</property> -->
<mapping resource="com/twopiradian/Employee.hbm.xml" />
</session-factory>
调用serviceRegistryBuilder.build()
之前,请参见以下帖子:
oracle.jdbc.driver.OracleDriver
jdbc:oracle:thin:@localhost:1521:xe
人力资源
人力资源
serviceRegistryBuilder.applySettings(configuration.getProperties());
我已经解决了这个问题。configure和applysettings方法基本相同,只是applysettings在DB设置中的每个属性之前添加了一个“hibernate.”前缀。在xml中手动添加前缀也可以解决此问题。
serviceRegistryBuilder.applySettings(configuration.getProperties());
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="hibernate.show_sql">true</property>
<mapping resource="com/org/Employee.hbm.xml"/>
</session-factory>
import java.util.Properties;
import org.hibernate.cfg.Configuration;
public class Demo {
public static void main(String[] args)
{
Employee emp=new Employee();
emp.setNme("Ravi");
emp.setSal(1000);
Configuration con= new Configuration();
con.configure();
Properties prop=con.getProperties();
ServiceRegistry sr = new StandardServiceRegistryBuilder().applySettings(con.getProperties()).build();
}
}