使用hibernate的id自动生成策略问题

       用hibernate都有一段时间了,用hibernate生成数据库对于hibernate来说算了基本要做的事情了。这样做也更能体现面向对象的思想.....  

       今天依然用了hibernate,不过跟完成不一样的是不是通过hibernate生成数据库,而是事先建立数据库,然后通过反向工程来生成hibernate配置文件。而且并没有考虑这样做跟用hibernate生成数据库有何不同。也正是因为这样,才导致了今天的问题出现了。

      数据库id设置为主键,并没有设置自动增长。当时的想法只是想让hibernate管理。hibernate也并没有负我所托,生成的hibernate配置文件id的生成策略为native(即hibernate根据数据库的类型决定使用那种策略,如果是DB2、MySQL、Sybase、MS SQL数据库则使用identity策略,如果是oracle则使用sequence策略),不过问题出现了,当我使用hibernate的save方法时,抛出id 为null的异常

       但是出现这个问题我怎么想都想不通,明明是已经设置为native啊,为什么还没用。于是乎跑到数据库里面设置id为自动加1。虽然也得以解决,但总是感觉很别扭,后来网上找了下资料,问了下大牛们,才发现是因为我使用的是数据库生成hibernate配置文件而不是hibernate生成数据库的。问题也就出现在这里,前者hibernate会把生成策略抛给数据库管理,而后者者会自己处理!!!!

       希望大家不要犯和我一样的错误!终究原因还是对hibernate不熟悉啊.....

posted @ 2010-01-08 20:44  Spring MVC 3  阅读(2060)  评论(0编辑  收藏  举报