使用hibernate的Java
我试着用hibernate用java编写一个基本程序。。。但是我得到了下面的错误描述使用hibernate的Java,java,eclipse,hibernate,Java,Eclipse,Hibernate,我试着用hibernate用java编写一个基本程序。。。但是我得到了下面的错误描述 WARN: HHH000277: Could not bind factory to JNDI org.hibernate.service.jndi.JndiException: Error parsing JNDI name [hiber] at org.hibernate.service.jndi.internal.JndiServiceImpl.parseName(JndiServiceImpl.
WARN: HHH000277: Could not bind factory to JNDI
org.hibernate.service.jndi.JndiException: Error parsing JNDI name [hiber]
at org.hibernate.service.jndi.internal.JndiServiceImpl.parseName(JndiServiceImpl.java:92)
at org.hibernate.service.jndi.internal.JndiServiceImpl.bind(JndiServiceImpl.java:108)
at org.hibernate.internal.SessionFactoryRegistry.addSessionFactory(SessionFactoryRegistry.java:89)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:480)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1769)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1840)
at manageEmployee.main(manageEmployee.java:26)
Caused by: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.getNameParser(Unknown Source)
at org.hibernate.service.jndi.internal.JndiServiceImpl.parseName(JndiServiceImpl.java:86)
... 6 more
Exception in thread "main" java.lang.ClassCastException: org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction cannot be cast to javax.transaction.Transaction
at manageEmployee.addEmployee(manageEmployee.java:44)
at manageEmployee.main(manageEmployee.java:34)
警告:hh000277:无法将工厂绑定到JNDI
org.hibernate.service.jndi.JndiException:解析jndi名称[hiber]时出错
位于org.hibernate.service.jndi.internal.JndiServiceImpl.parseName(JndiServiceImpl.java:92)
位于org.hibernate.service.jndi.internal.JndiServiceImpl.bind(JndiServiceImpl.java:108)
位于org.hibernate.internal.SessionFactoryRegistry.addSessionFactory(SessionFactoryRegistry.java:89)
位于org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:480)
位于org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1769)
位于org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1840)
位于manageEmployee.main(manageEmployee.java:26)
原因:javax.naming.NoInitialContextException:需要在环境或系统属性中指定类名,或作为小程序参数,或在应用程序资源文件中指定类名:java.naming.factory.initial
位于javax.naming.spi.NamingManager.getInitialContext(未知源)
位于javax.naming.InitialContext.getDefaultInitCtx(未知源)
位于javax.naming.InitialContext.getURLOrDefaultInitCtx(未知源)
位于javax.naming.InitialContext.getNameParser(未知源)
位于org.hibernate.service.jndi.internal.JndiServiceImpl.parseName(JndiServiceImpl.java:86)
... 还有6个
线程“main”java.lang.ClassCastException中的异常:org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction无法转换为javax.transaction.transaction
在manageEmployee.addEmployee(manageEmployee.java:44)
位于manageEmployee.main(manageEmployee.java:34)
我通过删除hibernate配置文件中打开会话工厂标记的name属性来修复此问题,使其如下所示:
<session-factory>
而不是
<session-factory name="">
这可能是由于缺少hibernate的一些依赖库或您导入了一些同名的假库引起的。如果发现以下情况,请检查您的导入语句:
import javax.transaction.Transaction;
然后将其替换为:
import org.hibernate.Transaction;
并从所有位置移除铸件,找到您正在铸造的位置,如下所示:
tx = (Transaction) session.beginTransaction();
除去
(交易)
从所有地方移除铸件