`
y150988451
  • 浏览: 199252 次
  • 性别: 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>
分享到:
评论

相关推荐

    hibernate复合主键映射

    为了使这个复合主键能够正确地参与到数据库的关联操作中,我们还需要创建一个对应的`@TableGenerator`,以便为每个复合主键生成一个唯一的序列号。这通常不是必需的,因为复合主键通常是业务逻辑决定的,而不是自增...

    Hibernate复合主键.

    三、配置复合主键生成策略 在Hibernate中,我们还需要为复合主键指定生成策略。这可以通过在`@Id`或`@EmbeddedId`的类中定义`@GeneratedValue`注解来完成。然而,对于复合主键,一般不推荐使用自增策略,因为复合...

    复合主键@IdClass

    equals方法用于比较两个复合主键对象是否相等,而hashCode方法则用于生成对象的哈希值,这对于实体管理尤其重要,因为实体管理器在执行find等操作时会依赖这些方法。 下面是一个具体的复合主键类示例——`...

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

    这篇文档将介绍如何使用Hibernate注解来生成复合主键或嵌入式主键。 复合主键(Composite Key)是指由两个或更多个列共同构成的唯一标识,而嵌入式主键(Embedded Key)则是将主键字段嵌入到实体类内部。在不使用...

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

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

    JPA联合主键

    - 在操作联合主键的实体时,需要特别注意主键的生成策略,因为JPA不会自动为联合主键生成值,除非明确指定。 ### 实践应用 在实际开发中,联合主键常常出现在需要多对多关联的场景,例如上述的`ProductCategory`...

    Java代码生成工具新版

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

    Nhibernate代码生成模板v1_1.rar

    "NHibernate代码生成模板v1_1"着重于修复了v1.0版本的一个主要问题,即在处理复合主键时,实体类在运行时会引发Nhibernate错误。在数据库设计中,复合主键是指由两个或更多列共同组成的唯一标识符。在ORM框架中,...

    ssh多主键插入

    在IT领域的数据库设计与操作中,处理具有多主键(复合主键)的表是一项常见但又复杂的任务。本文将围绕“ssh多主键插入”这一主题,深入探讨如何在Struts、Spring和Hibernate(SSH框架)中实现对具有多主键结构的...

    JPA中的联合主键

    如果希望使用自动生成,可能需要结合`@GeneratedValue`注解和特定的生成器策略,但这在联合主键中并不常见,因为主键通常是业务相关的。 4. **关联和查询** 当使用联合主键时,关联其他实体或执行查询时,需要确保...

    mybatis反向工程.根据数据库表生成wrapper xml文件和类

    如果需要联合主键,可以使用多个`@Id`注解或者自定义的复合主键类。 MyBatis-Plus是MyBatis的一个扩展,它提供了更丰富的功能,包括自动填充主键。在某些情况下,开发者可能会遇到MyBatis-Plus主键生成的坑,例如,...

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

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

    android ormlite 模拟实现联合主键

    在Android开发中,ORM(Object-Relational Mapping)框架如ORMLite被广泛用于简化数据库操作,使得开发者能够更方便...在测试过程中,一定要确保`getId()`方法生成的唯一标识符与查询条件相匹配,防止出现意外的问题。

    利用hibernate自动生成hbm.xml文件和entity类.doc

    6. 设置 Id Generator:在这里,可以选择 Id Generator 的类型,例如,可以选择 identity,让数据库提供主键生成机制,也可以选择 assigned,让外部程序负责生成主键。 7. 处理主外键关系:如果存在主外键关系,可以...

    生成hibernate映射文件工具

    6. `&lt;join&gt;`:用于处理复合主键或者跨表的复杂映射。 生成工具的工作原理大致如下: 1. 连接数据库:工具会首先连接到指定的数据库,获取数据库的元数据信息,如表名、列名、约束等。 2. 分析表结构:根据数据库中...

    C#自动生成EF实体代码及实体Configuration代码

    通过这种方式,你可以自定义实体的映射行为,比如忽略某些字段、定义复合键或者自增主键等。 在项目中,选择数据表后,右侧会即时生成对应的C#代码,包括实体类代码和配置代码。这一步骤大大提高了开发效率,因为...

    NHibernate XML映射文件自动生成工具

    1. ****:用于复合主键的映射。 2. ****:定义乐观锁版本字段,用于并发控制。 3. ****:映射类内的复杂类型或嵌入式对象。 4. **, , , **:这些集合类型的映射元素,用于处理一对多或多对多的关系。 在实际应用中...

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

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

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

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

    ycj代码生成器

    5. @Id和@IdClass注解:标识主键字段或复合主键类。 6. @Column注解:标记每个属性对应的数据库列名,可以设置额外的列属性,如长度、是否可为空等。 7. 其他MyBatis注解:如@Version(乐观锁)、@ResultMap(结果...

Global site tag (gtag.js) - Google Analytics