I wrote some code to test my configuration of Hibernate. But I come across an error message:
java.lang.UnsupportedOperationException: The application must supply JDBC connections
at org.hibernate.engine.jdbc.connections.internal.UserSuppliedConnectionProviderImpl.getConnection(UserSuppliedConnectionProviderImpl.java:61)
at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:380)
at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:228)
at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.getConnection(LogicalConnectionImpl.java:171)
at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doBegin(JdbcTransaction.java:67)
at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:162)
at org.hibernate.internal.SessionImpl.beginTransaction(SessionImpl.java:1435)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.hibernate.context.internal.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:356)
at com.sun.proxy.$Proxy0.beginTransaction(Unknown Source)
My file structure is like below:
src
---test
-------Test.java(with main function)
-------User.java
-------User.hbm.xml
----hibernate.cfg.xml
This is not a web application, it's just an ordinary java project. The hibernate.cfg.xml is like below:
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Configure MySQL -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.URL">jdbc:mysql://localhost:3306/mags</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">bysjysf</property>
<property name="show_sql">true</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.current_session_context_class">thread</property>
<!-- Mapping Files -->
<mapping resource="test/User.hbm.xml" />
</session-factory>
</hibernate-configuration>
The code in main function is like below:
public static void main(String[] args) {
Configuration cfg = new Configuration().configure("hibernate.cfg.xml");
StandardServiceRegistryBuilder sb = new StandardServiceRegistryBuilder();
sb.applySettings(cfg.getProperties());
StandardServiceRegistry standardServiceRegistry = sb.build();
SessionFactory sessionFactory = cfg.buildSessionFactory(standardServiceRegistry);
Session session = sessionFactory.getCurrentSession();
System.out.println(session);
Transaction tx = session.beginTransaction();
User user = new User();
user.setPassword("aaaa");
user.setUsername("ysf");
user.setAuthority(1);
session.save(user);
tx.commit();
session.close();
}
According the error message, the error occurred in
Transaction tx = session.beginTransaction();
I am a new user for Hibernate, and I have checked my configuration file many times. Could anyone help to figure out what the problem is? Thanks!
The Hibernate version is 4.3.5
The hibernate property names in the configuration file are case sensitive.
<property name="hibernate.connection.URL">
should be
<property name="hibernate.connection.url">