工作以来本人经历的一些hibernate问题集锦--更新中
1.org.
hibernate.LazyInitializationException: could not initialize proxy - no
Session
看了网上一片文章`
解决方法是lazy设置为false 终于知道问题的根源,将lazy设置为false run了一次XDoclet,生成了hbm配置
文件,但问题仍未解决!访问时还是报这个错误
最后看看配置,lazy选项没了``才发觉XDoclet是不会帮你生成lazy选项的`
又或者是我没加上
最后在hbm配置文件中修改lazy="false"问题得到解决
- <class
- name="cn.jjo.type.ejb.SmallType"
- table="PRO_SMALLTYPE"
- dynamic-update="true"
- dynamic-insert="true"
- lazy="false"
- >
- 2.换数据库时经常犯得错,没换数据库方言
- 下面是spring中配置HibernatesessionFactory的例子
- <beanid="sessionFactory"
- class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
- <propertyname="dataSource"ref="dataSource"/>
- <propertyname="hibernateProperties">
- <props>
-
- <propkey="hibernate.dialect">
- org.hibernate.dialect.MySQLDialect
- </prop>
- <propkey="hibernate.show_sql">false</prop>
- <propkey="hibernate.hbm2ddl.auto">update</prop>
- <propkey="hibernate.jdbc.batch_size">20</prop>
- <propkey="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</prop>
- <!--
- <propkey="hibernate.cache.provider_class">
- org.hibernate.cache.EhCacheProvider
- </prop>
- -->
- <propkey="hibernate.cache.use_query_cache">true</prop>
- </props>
- </property>
- <propertyname="mappingResources">
- <list>
- <value>cn/jjo/product/ejb/Product.hbm.xml</value>
- <value>cn/jjo/user/ejb/Admin.hbm.xml</value>
- <value>cn/jjo/product/ejb/Information.hbm.xml</value>
- <value>cn/jjo/product/ejb/BigType.hbm.xml</value>
- <value>cn/jjo/product/ejb/ExcelInfo.hbm.xml</value>
- </list>
- </property>
- </bean>
以下是各数据库对应得方言
RDBMS |
方言 |
DB2 |
org.hibernate.dialect.DB2Dialect |
DB2 |
org.hibernate.dialect.DB2400Dialect |
AS/400 |
org.hibernate.dialect.DB2390Dialect |
DB2 OS390 |
org.hibernate.dialect.PostgreSQLDialect |
PostgreSQL |
org.hibernate.dialect.PostgreSQLDialect |
MySQL |
org.hibernate.dialect.MySQLDialect |
MySQL with InnoDB |
org.hibernate.dialect.MySQLInnoDBDialect |
MySQL with MyISAM |
org.hibernate.dialect.MySQLMyISAMDialect |
Oracle (any version) |
org.hibernate.dialect.OracleDialect |
Oracle 9i/10g |
org.hibernate.dialect.Oracle9Dialect |
Sybase |
org.hibernate.dialect.SybaseDialect |
Sybase Anywhere |
org.hibernate.dialect.SybaseAnywhereDialect |
Microsoft SQL Server |
org.hibernate.dialect.SQLServerDialect |
SAP DB |
org.hibernate.dialect.SAPDBDialect |
Informix |
org.hibernate.dialect.InformixDialect |
HypersonicSQL |
org.hibernate.dialect.HSQLDialect |
Ingres |
org.hibernate.dialect.IngresDialect |
Progress |
org.hibernate.dialect.ProgressDialect |
Mckoi SQL |
org.hibernate.dialect.MckoiDialect |
Interbase |
org.hibernate.dialect.InterbaseDialect |
Pointbase |
org.hibernate.dialect.PointbaseDialect |
FrontBase |
org.hibernate.dialect.FrontbaseDialect |
Firebird |
org.hibernate.dialect.FirebirdDialect |
还可以配置.properties文件这里就不列出了。也是一个“#”号问题。。。
其实不人不怎么懂方言得作用,上课李
老师说了也好像忘记了цк ,应该是英语跟中文的差别吧。。。
3.初学者常见问题
Caused by: org.dom4j.DocumentException: Invalid byte 2 of 2-byte UTF-8 sequence. Nested exception: Invalid byte 2 of 2-byte UTF-8 sequence.
如果出现这行错误说明你的xml配置文件有不规范的字符,检查下。
net.sf.hibernate.MappingException: Error reading resource: hibernate/Hello_Bean.hbm.xml
如果出现这行错误说明你的hibernate的XML配置文件有错\r
net.sf.hibernate.MappingException: Resource: hibernate/Hello_Bean.hbm.xml not found
如果出现这行错误说明hibernate的XML配置文件没有找到,你应该把XML文件放在与你的类文件同个
目录下,本文中是放
在hibernate\classes\hibernate\目录下,也就是跟Hello_Bean.class类文件一起。
net.sf.hibernate.PropertyNotFoundException: Could not find a setter for property name in class hibernate.Hello_Bean
如果出现这行错误说明你的xml文件里设置的
字段名name的值与Hello_Bean.
java类里的getXXX或setXXX方法不一致。
net.sf.hibernate.HibernateException:
JDBC Driver class not found: org.gjt.mm.
mysql.Driver
如果出现这行错误说明你的MYSQL驱动没有加进LIB库里或者不在CLASSPATH里。
PS:没有错误是不正常,错误是我们的老师啊!!