hibernate的文档也会偷懒:Access to DialectResolutionInfo cannot be null when ‘hibernate.dialect’ not set

配置hibernate4的SessionFactory,按照文档配置完毕,总是下面的报错,无法创建factory:

Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set

将hbm.cfg.xml中的dialect改成了hibernate.dialect还是不行,嘿,怎么肥事…还解决不了了么。

然后一阵谷歌,发现原来是hibernate的文档没有更新…下面是SessionFactory的生成方法:

Configuration configuration = new Configuration().configure("hbm.cfg.xml");
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
        .applySettings(configuration.getProperties()).build(); // 就是少了applySettings
SessionFactory factory = configuration.buildSessionFactory(serviceRegistry);

估计新版本需要要将配置应用到serviceRegistry上才行吧,然后文档就这么埋了坑。

Hibernate涉及Date变量报“Data truncation”错误

使用Hibernate照着教程写了一个数据存入数据库的代码,数据的类型有int,Sting和java.util.Date,运行报错:

ERROR: Data truncation: Incorrect datetime value: ” for column ‘BIRTHDAY’ at row 1

查阅后感觉是Date数据为空,但打印出来发现并不为空…最后终于发现是JDBC驱动版本太低了导致的……估计新版对Date类型有更新,想想Date类型数据的确是个头痛的事儿。

之前图方便把3.1.13版的JDBC导入了工程,后面重新下载了最新版5.1.37,就没有报错了。

看来写程序还是不能图方便啊,尽量使用新版。

对了,JDBC驱动在MySql网站上也叫做Connector/J,搜索就可以下了!

Hibernate出现“Error parsing JNDI name []”错误解决方法

使用Eclipse编写Hibernate写入数据库的代码,运行能通过,但是有警告:

WARN: HHH000277: Could not bind factory to JNDI
org.hibernate.engine.jndi.JndiException: Error parsing JNDI name []

这是什么原因呢,搜之得到,原来是Eclipse自动生成.cfg.xml文件时,在标签中加入name=””导致的,因此更改如下:

<hibernate-configuration>
 <session-factory>

即去掉name=””,这个貌似是和JNDI有关,还没有这么深入研究,我也说不出所以然啦,这里就这么处理吧。

对了,如果Eclipse打开.xml文档不是显示的代码,而是一些选项框的话,那么在编辑框的下方找到“Source”按钮就可以调回代码模式了。

Java自学之路:Hibernate5.0初始化配置

开始学习Hibernate了,教程是慕课网上找的,结果跟着慕课网上的教程一步一步的折腾了半天,居然发现无法配置Hibernate,具体细节就不说了,直接说原因。

因为慕课网当时做的视频使用的是Hibernate4.2.4(就是4.0),而我现在下的Hibernate最新版是5.0.2(就是5.0),这两个版本的配置方法不一样……

我去啊……这纯粹就是给初学者那本来就脆弱的小心脏猛烈的打击啊!!!经过Derek大神的指点,还是乖乖的看Guide吧,应该有例子……嘿,果不其然,真让我在茫茫的英文字母中找到了案例,直接抄过来就好了。 继续阅读