Hibernate从2升级到3不支持Oracle8外连接(+)的解决办法

最近接手了一个要维护的项目,是用Hibernate2+Oralce8写成的,因为看到Hibernate3页出来这么久了,而且也感觉Hibernate3有它的许多新的特性,如批量删除和更新,新的HQL语法解析器AST。

升级过程大致按照孙卫琴的那篇文章 如何把Hibernate2.1升级到Hibernate3.0?来做,该替换的替换完,该设置的设置完,程序一跑,当程序执行到向下面这种查询的时候(Oracle所特有的外连接查询),报错。

语句为:(描述为类似语句,把项目中的实际表名隐去了) 阅读全文 >>

Struts下的MapForm [转]

我们知道Struts的ActionForm一直被大家视为缺陷,觉得多余,但我个人认为ActionForm还是有它存在的理由。我们建立ActionForm通常和Web页面的Form元素绑定,用于数据的收集和校验等。ActionForm的属性必须声明,然后才能用于和Web页面中,我们经常遇到一些属性不需要全部声明,如查询条件等,而且ActionForm的属性太多时管理也是个问题,再另一些情况下,如采购单,使用master/detail方式,ActionForm的创建变的困难,好多属性均不确定,如采购明细为对条记录,这样处理比较麻烦,在这篇文章中,我们将向你讲述如何使用Struts的MapForm机制实现这样的功能。 阅读全文 >>

Hibernate如何与Firebird数据库自增字段映射

Firebird 本身是没有自增型字段,但可以通过序列键产生器和触发器共同来实现,步骤如下:

CREATE TABLE my_table (
    my_number integer not null primary key
)
CREATE GENERATOR my_generator
CREATE TRIGGER my_before_trigger FOR my_table
    BEFORE INSERT
    AS
    BEGIN
    IF (NEW.my_number IS NULL) 
        THEN NEW.my_number = GEN_ID(my_generator, 1);
    END

阅读全文 >>

MyEclipse5.1生成映射文件出现Generating Artifacts错误

使用 Eclipse3.2.1+MyEclipse5.1+classes12.jar+Hibernate3

建立了 Hibernate3 的 Project, 使用上面那个 classes12.jar 的驱动,在 MyEclipse 的 DB Browser

连接上数据库,选择表,在上下文菜单中点击 Hibernate Reverse Engnieering, 直接点 Finish 按钮,

生成映射文件是出现出错:
An internal error occurred during "Generating Artifacts" 阅读全文 >>

用 apache commons-email 轻松发送无乱码邮件

原来项目中都是自己拿到 mail.jar 和 activation.jar 两个包编写发送Email的代码,虽然不难,但也有些麻烦。

现在好了,在 apache 站点有一个 jarkata/commons/email 子项目,也为我们实现了发送 Email 的功能,在 http://jakarta.apache.org/commons/email/ 把包 commons-email-1.0.jar 下来,自己要写的代码就十分少了,并且非常明了。

这个包的大小只有23K,也就是9个类而已,却能让您省不少事。 阅读全文 >>

Java Web应用因tld文件损坏出现的错误

部署一个 Web 应用到 WebSphere Application Server 中,浏览 index.jsp 页面时而正常,时而出现500错误,查看服务器输出日志可以看到以下错误,

E SRVE0026E: [Servlet Error]-[This absolute uri (http://jakarta.apache.org/struts/tags-logic) cannot be resolved in either web.xml or the jar files deployed with this application]: org.apache.jasper.JasperException: This absolute uri (http://jakarta.apache.org/struts/tags-logic) cannot be resolved in either web.xml or the jar files deployed with this application 阅读全文 >>

Spring MVC 初体验

相信很多搞过Java的人都用过 Struts,或者转到用 Spring 框架后使用的仍然是Struts提供的MVC,那么是否想更多了解一下 Spring 本身的 MVC 呢,其实 Spring 的 MVC 还是很不错的,它×?Struts 中好的东西,还集 WebWork 的拦截器,下面来让我对 Spring MVC 作一个最简单的体验。 

称之谓简单是我觉得要去体验 Spring 的 MVC 的这个例子已经是精小到极致了,应用中没有配置ContextLoaderServlet或者ContextLoaderListener。借鉴于 Struts 的概念,这个实例中的的请求处理过程依次是/helloSpring.unmi->helloSpringController->helloSping.jsp) 阅读全文 >>

为何Java的有包名的类不能引用默认包中的类

有两个java类,源代码如下:

 //没指定包名,也就是在默认包中public class B {
  public void print(){
    System.out.println("Printed By B Class");
  }
}
 package com.unmi;
import B; //引用默认包中的B类
public class A {
  public static void main(String[] args) {
    B b = new B(); //在A中想要引用默认包中的B类
  }
}

先不说在IDE中如何编译它们以及会提示什么语法错误,只是用命令javac来编译它们,先是把它们放在同一个目录下,注意的是,虽然A.java有package unmi.com;声明,我们还是先把它放在下B.java同一目录,希望由javac命令来生成相对应的包目录。 阅读全文 >>

Log4J 输出日志时是如何获知当前方法、行号的

记得最早在项目中用Log4j的时候,也是觉得在每一个要记载日志的类中或者某个上层类中要声明一个Logger属性挺麻烦的

注(2018-06-30):本文所展示的 Log4J 如何定们位置信息可参考 Log4J 1.2.13 的源代码,新代码可能有出入。

或者

于是就写了一个自己的Logger类UnmiLogger,也就是把Log4j的Logger包装一下,直接调用Logger的日志输出方法,info、debug、warn等,只不过在UnmiLogger中把日志输出方法都改为静态的,让在别的代码中方便使用。 阅读全文 >>