1、could not find a getter for ... in class ... 异常的解决
在spring+hibernate框架的java项目开发过程中,经常会遇到这样的错误:
could not find a getter for ... in class...
可能原因如下:
1.真的没有写getter方法(发生几率:小)
2.*.hmb.xml文件中的属性名和pojo不一致(*.hbm.xml和*.java没衔接好,不一致),字段属性没有正确配置,比如,*.hmb.xml中*.java的地址要明确(明确指出引用包的完整路径);映射错误;有多个主键时,对生成的联合主键配置错误;拼写错误(包括多空格)等(发生几率:大)
3.方法写错/方法名写错,要按照javabean的书写规范写啊,要不然打死也找不到哪儿错了(发生几率:大)
2、返回JSON格式的数据时,Struts中返回后首字母变为了小写
3、在类级别上推荐使用立即检索策略,而在关联级别则推荐使用延迟检索策略。如果不考虑类级别采用何种检索策略,且想立即检索持久化对象时,可以使用Session实例的get()方法。
4、为了在HQL的查询语句中直接使用中文,我们必须在hibernate.cfg.xml配置文件中加入如上属性的定义:
<property name='hibernate.query.factory_class"> org.hibernate.hql.classic.ClassicQueryTranslatorFactory <property>
5、分清表的几种连接关系
6、解决中文乱码问题
<property name="connection.url"> jdbc:mysql://localhost:3306/db_test12?useUnicode=true&characterEncoding=gb2312 </property>
7、数据库中方言的配置
MySQL的方言为MySQLDialect,SQL Server的方言为SQLServerDialect
8、由于Hibernate依靠对象标识符(OID)来区别不同的持久化对象。而对象标识符(OID)则可以通过Hibernate内置的标识生成器来产生。
identity时OID由底层的数据库的自增主键机制产生。
native根据底层数据库对自动生成OID能力的支持,具体选择identity、sequence或hile生成器产生OID,常用于跨平台。
9、级联关系在Hibernate中具有非常重要的作用,它可以保证主控方所关联的被控方的操作的一致性,例如主控方进行save、update、或delete操作时被控方会进行同样的操作。
10、Session 的get()方法用于从数据库中加载指定的持久化对象到Session缓存中,如果指定的记录不存在,则返回null
Session的load()方法用于从数据库中加载指定的持久化对象到Session缓存中,如果指定的记录不存在,则抛出异常
11、