2

i was trying a basic program in java using hibernate... but im getting the following error description

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)
0

3 Answers 3

7

I fixed this by removing the name attribute from opening session factory tag in my hibernate configuration file so that it looks like the following:

<session-factory>

instead of

<session-factory name="">
Sign up to request clarification or add additional context in comments.

Comments

3

Check your imports statement if found this:

import javax.transaction.Transaction;

Then replace this with:

import org.hibernate.Transaction;

And remove casting from all places find where you're casting like below:

 tx = (Transaction) session.beginTransaction();

Remove

(Transaction)

to remove casting from all places.

Comments

0

This could be triggert by either there are some depending libarys of hibernate missing or u have imported some false libarys with the same name.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.