hibernate 有可以自定义主键的http://weishuwei.javaeye.com/blog/66009 看看这篇文章吧,兄弟...
解决方案 »
- 【求助】系统验证邮件发送问题?
- 请教关于java web项目框架
- 请教Commons DbUtils问题
- struts2安装的问题~~~帮帮我
- 请问将struts和jboss整合时,要不要将struts的相关包拷由到jboss下面,还是直接将编译好war发布到jobss的deploy下就就可以了?谢谢。
- AXIS2发页的Web Service, 远程调用带参数的函数就出错,是怎么会事?
- jbuilder中调试一个类文件后,用不用重启jbuilder自带的tomcat服务?
- ASP 能都做到,在WEB中编辑WORD 文档!! JSP 如何实现?
- 如何让遗留程序理解SOAP消息?
- Java Mongo 如何实现分组后再分页??
- hibernate进行简单查询变慢的原因
- hibernat异常驻机构
单是生成U20071016(1-2-3-........) 这点到是写出来了.
但当日期变成1017,又要初使化为U200710160001为这天第一个注册用户的ID,这里还没想出招来...
那里有主键生成器的 sql 代码 注释也很详细 创建表 tbrecno
create table tbrecno
(
fRecord varchar(30) ,
Predate datetime,
Prenum int,
Word varchar(4)
)
再 执行 http://dev.csdn.net/article/44/44775.shtm 这里的SQL版的主键生产器 的存储过程
1.写个主键生成器 的存储过程
2.主键生成方式设置为assigned
3.用JDBC 调用存储过程
用 session.connection();获得Connection 对象
之后就可以执行存储过程了
如:存储过程名 getpkno 有两个参数 一个是 输入参数 第二个是返回参数
如下调用 Session session = HibernateSessionFactory.currentSession();
String pk=null;
Connection conn = null;
CallableStatement call = null;
conn = session().connection();
try {
call = conn.prepareCall("{call getpkno(? ,?)}");
call.setString(1, "Yp_ypxx");//设置输入参数
call.registerOutParameter(2, java.sql.Types.VARCHAR);//注册输出参数
call.execute();//执行
pk= call.getString(2);//得到输出参数
return pk;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
call.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return pk;
//这里写一下你的主键生成策略
//按你的这个要求写很简单的,获得日期->转换成字符串,最后添加4位数字递增
//每个主键生成都先检测一下已有的主键值,最后四位递增就可以了
}然后配置你自定义的主键策略就是了
session.save(object,id)
如果有 则为currentKey+1
没有 则为0001 把currentKey设置成0001