【问题标题】:Cannot connect to database using hibernate with Microsoft Access无法通过 Microsoft Access 使用休眠连接到数据库
【发布时间】:2015-06-20 21:10:50
【问题描述】:

我遇到了这个异常:

1266 [main] INFO org.hibernate.tool.hbm2ddl.SchemaExport - Running hbm2ddl schema export
1266 [main] INFO org.hibernate.tool.hbm2ddl.SchemaExport - exporting generated schema to database
1266 [main] ERROR org.hibernate.tool.hbm2ddl.SchemaExport - schema export unsuccessful
java.lang.UnsupportedOperationException: The user must supply a JDBC connection
    at org.hibernate.connection.UserSuppliedConnectionProvider.getConnection(UserSuppliedConnectionProvider.java:54)
    at org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare(SuppliedConnectionProviderConnectionHelper.java:51)
    at org.hibernate.tool.hbm2ddl.SchemaExport.execute(SchemaExport.java:263)
    at org.hibernate.tool.hbm2ddl.SchemaExport.create(SchemaExport.java:219)
    at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:370)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1842)
    at com.vaannila.util.HibernateUtil.<clinit>(HibernateUtil.java:11)
    at com.vaannila.student.Main.main(Main.java:14)
Exception in thread "main" java.lang.UnsupportedOperationException: The user must supply a JDBC connection
    at org.hibernate.connection.UserSuppliedConnectionProvider.getConnection(UserSuppliedConnectionProvider.java:54)
    at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
    at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
    at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:160)
    at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:81)
    at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1473)
    at com.vaannila.student.Main.main(Main.java:17)

请帮我解决这个问题。这是我的配置文件:

 <hibernate-configuration> 
 <session-factory> 
 <property name="hibernate.connection.driver_class">sun.jdbc.odbc.JdbcOdbcDriver</property>
 <property name="hibernate.connection.username"></property>
 <property name="connection.password"></property> 
 <property name="connection.pool_size">1</property>
 <property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property> 
 <property name="hibernate.conn.url">jdbc:odbc:demo</property> 

【问题讨论】:

  • 你能告诉我们你在哪里设置休眠并传递一个配置字符串吗?
  • 我的休眠配置文件附在下面。 sun.jdbc.odbc.JdbcOdbcDriver1org.hibernate.dialect.SQLServerDialectjdbc:odbc:demo
  • 您是否尝试连接到其他数据库,例如hsqldb 还是 h2?

标签: java hibernate ms-access-2007 hibernate-mapping


【解决方案1】:

检查您的休眠属性名称。

hibernate.conn.url

应该是:

hibernate.connection.url

你的

连接密码

应该是

hibernate.connection.password

其余部分看起来不错,但请重新检查文档。我看到你有一个空的密码字段和用户名属性。您的 odbc 连接是否需要名称和密码?

如果您缺少登录凭据等其他信息,修复连接字符串至少会给您一种新类型的错误。

这些 xml 配置非常繁琐!

【讨论】:

  • 上述错误已解决,但现在我低于 exception1665 [main] INFO org.hibernate.impl.SessionFactoryObjectFactory - 未将工厂绑定到 JNDI,未配置 JNDI 名称 休眠:插入 ADDRESS(ADDRESS_STREET,ADDRESS_CITY , ADDRESS_STATE, ADDRESS_ZIPCODE) 值 (?, ?, ?, ?) 选择 scope_identity() 1824 [main] WARN org.hibernate.util.JDBCExceptionReporter - SQL 错误:-3516,SQLState:37000 1824 [main] ERROR org.hibernate。 util.JDBCExceptionReporter -
  • [Microsoft][ODBC Microsoft Access Driver] SQL 语句末尾缺少分号 (;)。 org.hibernate.exception.SQLGrammarException:无法插入:[com.vaannila.student.Address] at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:92) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper .java:66) 在 org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:64)
  • 在 org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2327) 在 org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2834) 在 org.hibernate .action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:71) 在 org.hibernate.engine.ActionQueue.execute(ActionQueue.java:273) 在 org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:320)
  • 在 org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203) 在 org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129) 在 org.hibernate .event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java :117)
  • at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93) at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:685) at org.hibernate.impl .SessionImpl.saveOrUpdate(SessionImpl.java:677) 在 org.hibernate.engine.CascadingAction$5.cascade(CascadingAction.java:252) 在 org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:392)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-04
  • 1970-01-01
  • 2012-06-05
  • 1970-01-01
  • 2015-10-14
  • 1970-01-01
相关资源
最近更新 更多