`
y150988451
  • 浏览: 195764 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

复合主键的生成

阅读更多
package com.ly.commons;

import java.io.Serializable;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.hibernate.HibernateException;
import org.hibernate.engine.SessionImplementor;
import org.hibernate.id.IdentifierGenerator;

public class MyKey implements IdentifierGenerator {

	public Serializable generate(SessionImplementor ss, Object arg1)
			throws HibernateException {
		Date date = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyymmdd");
		String str =sdf.format(date);
		
		String sql ="select USERSQL.nextval FROM dual";
		String id="";
		Connection conn =ss.getJDBCContext().getConnectionManager().getConnection();
		try {
			PreparedStatement ps =conn.prepareStatement(sql);
			ResultSet res =ps.executeQuery();
			while(res.next()){
				id=res.getString(1);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		int size =6-id.length();
		for(int i=0;i<size;i++){
			id="0"+id;
		}
		return Long.parseLong(str+id);
	}
}
//-------------------------------------------------------------------



<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="com.ly.domain.Users" table="USERS" schema="SCOTT">
        <id name="userid" type="java.lang.Long">
            <column name="USERID" precision="22" scale="0" />
            <generator class="com.ly.commons.MyKey" />
            
        </id>
        <property name="username" type="java.lang.String">
            <column name="USERNAME" length="20" />
        </property>
        <property name="image" type="java.lang.String">
            <column name="IMAGE" />
        </property>
    </class>
</hibernate-mapping>
分享到:
评论

相关推荐

    JPA学习笔记-EJB-03JPA主键生成策略总结

    第一个就是简单的单字段主键类型,一个就是复杂的复合主键类型。我们分2种情况分别讨论。 第一种单字段主键类型,看上去简单,无非就是一个id字段呗,实际上这个主键字段在JPA,还有任何的ORM框架中都是有很多种生成...

    hibernate3 注释生成复合主键或者嵌入式主键的方法及实例.doc

    hibernate3 注释生成复合主键或者嵌入式主键的方法及实例

    演示怎样在Hibernate中使用复合主键

    如果使用Hibernate开发legacy的数据库应用,对于数据库表中有使用字符串作为主键或者使用复合主键情况,那么对于这些情况的影射档是比较麻烦的。该示例应用演示了两张表ITEM和CATEGORY_ITEM表有主外键关系,并且ITEM...

    Java代码生成工具新版

    支持自增主键,复合主键,外键关联。 生成Hibernate POJO类,Dao类,Service类,Action类。 生成保存,删除,修改,批量保存,批量修改,批量删除,按条件查询,分页查询等功能。 生成各大主流框架配置文件及JSP页面...

    Hibernate复合主键

    方法:将主键字段从POJO类中提出了,生成一个主键类。 可以将1中的例子加以改造,将firstname和lastname字段单独提取到一个主键类中。

    Java代码生成工具(傻瓜式操作无需教程的代码生成工具) v2.0.zip

    支持自增主键,复合主键,外键关联。  生成hibernate pojo类,dao类,service类,action类。  生成保存,删除,修改,批量保存,批量修改,批量删除,按条件查询,分页查询等功能。  生成各大主流框架配置文件...

    Nhibernate代码生成模板v1_1.rar

    用于Nhibernate的代码自动生成,基于动软代码生成器的模板。 v1.1:修复使用复合主键时实体类在运行时Nhibernate报错的bug

    MySQL数据库主键重复原因分析及处理.pdf

    单字段主键是指由一个字段组成的主键,而复合主键是指由多个字段组成的主键。 在MySQL数据库中,主键可以使用AUTO_INCREMENT机制来自动生成主键值。这可以简化数据库设计和开发的工作。 但是,MySQL数据库主键也...

    LTP.Net代码自动生成器(DbToCode)

    类似SQLServer2000的管理界面,方便平常在代码编辑的时候想查看数据库的信息,并且可以很直观的查看字段类型,长度,主键,默认值等详细信息,省去了在代码和数据库管理器之间的来回切换,方便快捷。 (1)支持多种...

    Hibernate映射配置入门进阶详解

    1)根元素映射 2)类映射 3)属性映射 4)主键的配置 5)主键生成策略 复合主键策略 史上最详细

    AndroidORM解决方案RapidORM.zip

    GreenDao:-优点:性能很不错,-缺点:API却不太友好,而且不支持复合主键,主键必须要有并且必须是long或者Long。持久类可以用它提供的模版生成,但是一旦使用了它的模版,持久类、DAO就不能随意去修改,扩展性...

    动软.Net代码自动生成器(Codematic)

    类似SQLServer2000的管理界面,方便平常在代码编辑的时候想查看数据库的信息,并且可以很直观的查看字段类型,长度,主键,默认值等详细信息,省去了在代码和数据库管理器之间的来回切换,方便快捷。 (1)...

    MyBatis Generator 生成器把其他数据库的同名表生成下来的问题:[WARNING] Table Configuration product matched more than one t

    今天用逆向工程时,发现生成的xml有700多行,而且对应的方法生成了三次,所以导致java.lang.IllegalArgumentException 然后查阅资料解决办法: 使用mybatis逆向工程多次生成mapper时,未将之前生成的mapper.xml删除...

    mybatis自动生成工具修改版1.3.7源码--maven项目可直接运行

    mybatis-1-3-7自动生成工具修改版源码--maven项目 1、实体类添加注释。 2、mapper.xml去掉jdbcType类型转换 3、修改文件名mapper.java修改为IDAO.java...复合主键采用原模式 5、搭建的1.3.7源码maven项目。可直接运行。

    POJOGenerator v1.3.3 Install(可视化POJO代码生成器最终版)

    知档,其中,ID列名默认使用主键名称(若为复合主键则采用次序排首位的主键列名) ,而Oracle环境下的sequence对象名称则为“seq_表名_id”格式的默认名称,请根据 实际情况修改。该配置档用于CmSdk4j-Core框架的ORM...

    第25章_JPA概述.

    29.1主键生成策略 29.2 复合主键 29.3嵌入式主键 29.4 一对一关系的配置和使用 29.5 多对一和一对多关系的配置和使用 29.6 多对多的关系 29.7 把查询的多个值封装成对象 29.8 批量更新和删除 29.9 使用存储过程 29....

    表结构设计器(EZDML)1.96

    表结构设计工具,可快速的进行数据建模,能迅速生成代码模板、简单界面和字典文档,支持脚本编程。 2012年10月20日 V1.95 增加HTML表单生成和预览....支持多字段复合主键,选表生成数据库. Bug修复.

    jaguar_orm:具有关系(一对一,一对多,多对多),预加载,级联,多态关系等的源生成的ORM

    具有关系(一对一,一对多,多对多),预加载,级联,多态关系等的源生成的ORM产品特点人际关系预载级联级联刀片级联更新级联清除移民多态关系复合主键复合外键入门声明模型class User { @PrimaryKey () String id;...

    xdata-xmysql-service:xdata-xmysql-服务

    Xmysql:一个用于为任何MySql数据库生成REST API的命令 为什么这个 ? 为MySql数据库生成不遵循Rails,django,laravel等框架约定的REST API是一个小冒险,人们喜欢避免.. ...支持复合主键 :fire: :fire: R

    Achilles:用于Cassandra的高级Java Object MapperQuery DSL生成器

    高级bean映射(复合主键,复合分区键,timeUUID,计数器,静态列...) 可插入的编解码器系统来定义您自己的类型 生命周期拦截器,用于在INSERT / UPDATE / DELETE / SELECT操作之前定义自定义行为 流利的选项系统...

Global site tag (gtag.js) - Google Analytics