你说的初始化问题都已经在一个语句中解决啦 SessionFactory sessionFactory = new Configuration().configure() .buildSessionFactory();这个不就相当于 Configuration conf = new Configuration(); SessionFactory sessionFactory = conf.configure().buildSessionFactory(); 不过我也换成这种方式试了一下,还是报错 报错行出现在tx.commit()
SessionFactory sessionFactory = new Configuration().configure() .buildSessionFactory(); 好象已经初始化咯。
什么错误信息,还是nullpoint?
是啊,还是NullpointerException 具体如下: java.lang.NullPointerException at com.mysql.jdbc.PreparedStatement.asSql(PreparedStatement.java:1845) at com.mysql.jdbc.PreparedStatement.toString(PreparedStatement.java:1770) at java.lang.String.valueOf(String.java:2131) at java.lang.StringBuffer.append(StringBuffer.java:370) at com.mysql.jdbc.trace.Tracer.printParameters(Tracer.aj:240) at com.mysql.jdbc.trace.Tracer.printEntering(Tracer.aj:167) at com.mysql.jdbc.trace.Tracer.entry(Tracer.aj:126) at com.mysql.jdbc.trace.Tracer.ajc$before$com_mysql_jdbc_trace_Tracer$1$f51c62b8(Tracer.aj:45) at com.mysql.jdbc.Connection.registerStatement(Connection.java) at com.mysql.jdbc.Statement.<init>(Statement.java:171) at com.mysql.jdbc.PreparedStatement.<init>(PreparedStatement.java:139) at com.mysql.jdbc.ServerPreparedStatement.toString(ServerPreparedStatement.java:851) at java.lang.String.valueOf(String.java:2131) at java.lang.StringBuffer.append(StringBuffer.java:370) at com.mysql.jdbc.trace.Tracer.printParameters(Tracer.aj:240) at com.mysql.jdbc.trace.Tracer.printEntering(Tracer.aj:167) at com.mysql.jdbc.trace.Tracer.entry(Tracer.aj:126) at com.mysql.jdbc.trace.Tracer.ajc$before$com_mysql_jdbc_trace_Tracer$1$f51c62b8(Tracer.aj:45) at com.mysql.jdbc.Connection.registerStatement(Connection.java) at com.mysql.jdbc.Statement.<init>(Statement.java:171) at com.mysql.jdbc.PreparedStatement.<init>(PreparedStatement.java:201) at com.mysql.jdbc.ServerPreparedStatement.<init>(ServerPreparedStatement.java:133) at com.mysql.jdbc.Connection.prepareStatement(Connection.java:1370) at com.mysql.jdbc.Connection.prepareStatement(Connection.java:1335) at net.sf.hibernate.id.IncrementGenerator.getNext(IncrementGenerator.java:64) at net.sf.hibernate.id.IncrementGenerator.generate(IncrementGenerator.java:42) at net.sf.hibernate.impl.SessionImpl.saveWithGeneratedIdentifier(SessionImpl.java:776) at net.sf.hibernate.impl.SessionImpl.save(SessionImpl.java:749) at my.demo.hibernate.ComputerCreate.main(ComputerCreate.java:38) Exception in thread "main"
这样试一下~~我也刚学,我是怎样写得,运行成功了。 SessionFactory sessionFactory = new Configuration().configure() .buildSessionFactory(); Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); User user = new User(); user.setId("1"); user.setName("caterpillar"); user.setSex('M'); user.setAge(28); session.save(user); tx.commit(); session.close(); sessionFactory.close();
SessionFactory sessionFactory = new Configuration().configure()
.buildSessionFactory();这个不就相当于
Configuration conf = new Configuration();
SessionFactory sessionFactory = conf.configure().buildSessionFactory();
不过我也换成这种方式试了一下,还是报错
报错行出现在tx.commit()
.buildSessionFactory();
好象已经初始化咯。
具体如下:
java.lang.NullPointerException
at com.mysql.jdbc.PreparedStatement.asSql(PreparedStatement.java:1845)
at com.mysql.jdbc.PreparedStatement.toString(PreparedStatement.java:1770)
at java.lang.String.valueOf(String.java:2131)
at java.lang.StringBuffer.append(StringBuffer.java:370)
at com.mysql.jdbc.trace.Tracer.printParameters(Tracer.aj:240)
at com.mysql.jdbc.trace.Tracer.printEntering(Tracer.aj:167)
at com.mysql.jdbc.trace.Tracer.entry(Tracer.aj:126)
at com.mysql.jdbc.trace.Tracer.ajc$before$com_mysql_jdbc_trace_Tracer$1$f51c62b8(Tracer.aj:45)
at com.mysql.jdbc.Connection.registerStatement(Connection.java)
at com.mysql.jdbc.Statement.<init>(Statement.java:171)
at com.mysql.jdbc.PreparedStatement.<init>(PreparedStatement.java:139)
at com.mysql.jdbc.ServerPreparedStatement.toString(ServerPreparedStatement.java:851)
at java.lang.String.valueOf(String.java:2131)
at java.lang.StringBuffer.append(StringBuffer.java:370)
at com.mysql.jdbc.trace.Tracer.printParameters(Tracer.aj:240)
at com.mysql.jdbc.trace.Tracer.printEntering(Tracer.aj:167)
at com.mysql.jdbc.trace.Tracer.entry(Tracer.aj:126)
at com.mysql.jdbc.trace.Tracer.ajc$before$com_mysql_jdbc_trace_Tracer$1$f51c62b8(Tracer.aj:45)
at com.mysql.jdbc.Connection.registerStatement(Connection.java)
at com.mysql.jdbc.Statement.<init>(Statement.java:171)
at com.mysql.jdbc.PreparedStatement.<init>(PreparedStatement.java:201)
at com.mysql.jdbc.ServerPreparedStatement.<init>(ServerPreparedStatement.java:133)
at com.mysql.jdbc.Connection.prepareStatement(Connection.java:1370)
at com.mysql.jdbc.Connection.prepareStatement(Connection.java:1335)
at net.sf.hibernate.id.IncrementGenerator.getNext(IncrementGenerator.java:64)
at net.sf.hibernate.id.IncrementGenerator.generate(IncrementGenerator.java:42)
at net.sf.hibernate.impl.SessionImpl.saveWithGeneratedIdentifier(SessionImpl.java:776)
at net.sf.hibernate.impl.SessionImpl.save(SessionImpl.java:749)
at my.demo.hibernate.ComputerCreate.main(ComputerCreate.java:38)
Exception in thread "main"
SessionFactory sessionFactory = new Configuration().configure()
.buildSessionFactory(); Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
User user = new User();
user.setId("1");
user.setName("caterpillar");
user.setSex('M');
user.setAge(28);
session.save(user);
tx.commit();
session.close();
sessionFactory.close();
CREATE TABLE `test`.`user` (
`user_id` VARCHAR(32) NOT NULL,
`name` VARCHAR(16) NOT NULL,
`sex` CHAR(1),
`age` INTEGER,
PRIMARY KEY(`user_id`)
)
ENGINE = InnoDB;
跟数据库建表是否有关呢?
根据你的Mapping file,Hibernate自动为新User对象产生id属性的。id=null的user对象被认为是新对象。
<generator class="assigned"/>
</id>
有问题,Hibernate默认的是初始化"/hibernate.cfg.xml"这个文件,不在WEB环境中,你这个文件放的位置有可能不对,你可能在new Configuration().configure("config文件的绝对路径"),试试!