1、 java.lang.NoClassDefFoundError: org/hibernate/exception/DataException
出现该问题的原因是没有找到相关的class文件。
仔细检查项目中Hibernate包中的class文件,发现的确没有DateException.class这个文件。重新下载一个Hibernate包导入。问题解决。
当然引发此问题还有可能是语句写错了或者配置出错; 或者: 由于我们向数据库里存值是有的字段没有值而照成的,哪怕那个字段是允许为空的。
2、 String hql="select u from UserinfoId u where u.username=? and u.userpwd=?";则报如下异常:
java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.IdentNode
/-[IDENT] IdentNode: 'u' {originalText=u}
当我改成:
String hql="from UserinfoId u where u.username=? and u.userpwd=?";则那个异常消失了
——————至今仍未搞明白这是为什么....
3、 在web.xml配置监听器
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
在配置applicationContext.xml时, 如果前面不加classpath的话, 那么其默认是到meta-inf下去找, 而不是在web-inf下去查找。
4、 今天晚上练习时发现: 选择创建HibernateSessionFactory时假如没有导入hibernate3.0 advance包时则会报错..
修改web.xml是即时生效的, 而其他的xxx.xml文件就得重新部署才会生效....
5、 MyEclipse 自动补全设置与快捷键设置2009-02-12 12:06myeclipse快捷键问题 eclipse3.3中把内容助手(content assist)的快捷键由 al + /改成了ctrl + space,这又刚好跟我们操作系统的切换输入法的快捷键冲突,所以造成内容助手不能使用了,给写代码带来了极大的不便。而已前eclipse 3.2版本中的 alt + /快捷键被作为新的单词补全(word competion)功能的快捷键。所以现在想像以前一样使用alt+ /来实现内容助手的功能,就需要更改eclipse3.3快捷键的设置了。具体操作如下: 1. 点击Windows- >Preferences- >General- >Keys . 2. 在列出的快捷键列表中查找到:word competion,把它的快捷键alt + /改成其它的快捷键(怎么改,先把此快捷键删除,点右边的按钮 "remove binding ", 再选中binding文本框,输入你想要的快捷键)。 3. 在列出的快捷键列表中查找到:content assist,把它的快捷键ctrl +space改成我们想的的alt+ /即可了。
‘=================================================================================== 1. 打开MyEclipse 6.0.1,然后“window”→“Preferences” 2. 选择“java”,展开,“Editor”,选择“Content Assist”。 3. 选择“Content Assist”,然后看到右边,右边的“Auto-Activation”下面的“Auto Activation triggers for java”这个选项。其实就是指触发代码提示的就是“.”这个符号。 4. “Auto Activation triggers for java”这个选项,在“.”后加abc字母,方便后面的查找 修改。然后“apply”,点击“OK”。 5. 然后,“File”→“Export”,在弹出的窗口中选择“Perferences”,点击“下一步”。 6. 选择导出文件路径,本人导出到桌面,输入“test”作为文件名,点击“保存”。 7. 在桌面找到刚在保存的文件“test.epf”,右键选择“用记事本打开”。 8. 可以看到很多配置MyEclipse 6.0.1的信息 9. 按“ctrl + F”快捷键,输入“.abc”,点击“查找下一个”。 10. 查找到“.abc”的配置信息如下: 如下: 11. 把“.abc”改成“.abcdefghijklmnopqrstuvwxyz(,”,保存,关闭“test.epf”。 12. 回到MyEclipse 6.0.1界面,“File”→“Import”,在弹出的窗口中选择“Perferences”,点击 “下一步”,选择刚在已经修改的“test.epf”文件,点击“打开”,点击“Finish”。该步骤和上面 的导出步骤类似。 之后,你打什么字母,都会有提示了,呵呵,收藏了很长时间,拿来分享~~~~~
6、 建立Statement时使用默认参数。导致在使用执行rs.last()时,产生“java.sql.SQLException:对只转发结果集的无效操作:last”的异常。
最后在建立Statement时加入相关参数,就可以解决了。
操作查询结果集的过程中出现异常
出现异常的语句: rs.last();
异常的详细信息:对只转发结果集的无效操作: last
解决办法: stat = conn.createStatement();
改为 stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); 就可以了
分析: 异常出现于移动结果集的指针时,原因是在生成statement对象的时候提供的参数不同
无参数的那个方法使用的是默认参数,statement执行后得到的结果集类型为 ResultSet.TYPE_FORWARD_ONLY.这种类型的结果集只能通过rs.next();方法逐条读取,使用其他方法就会报异常. 如果想执行一些复杂的移动结果集指针的操作就要使用其他参数了
顺便简单介绍一下各个参数:
ResultSet.TYPE_FORWARD_ONLY (略)
ResultSet.TYPE_SCROLL_INSENSITIVE 双向滚动,但不及时更新,就是如果数据库里的数据修改过,并不在ResultSet中反应出来。
ResultSet.TYPE_SCROLL_SENSITIVE 双向滚动,并及时跟踪数据库里的更新,以便更改ResultSet中的数据。
ResultSet.CONCUR_READ_ONLY 只读取ResultSet
ResultSet.CONCUR_UPDATABLE 用ResultSet更新数据库