`
sunjiawang
  • 浏览: 16940 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
最近访客 更多访客>>
社区版块
存档分类
最新评论

复合主键

阅读更多

<?xml

<?xml version="1.0" encoding="iso-8859-1"?>
<!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.javaee.pojo.TUser" table="T_USER" schema="SCOTT">
        <id name="id" type="java.lang.Long">
            <column name="ID" precision="22" scale="0" />
            <generator class="increment" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="NAME" length="32" />
        </property>
        <set name="recodes" inverse="true" cascade="all-delete-orphan">
            <key>
                <column name="USERID" precision="22" scale="0" not-null="true"/>
            </key>
            <one-to-many class="com.javaee.pojo.Recode" />
        </set>
        <set name="goodses" inverse="true" cascade="all-delete-orphan">
            <key>
                <column name="ID" precision="22" scale="0" not-null="true" unique="true" />
            </key>
            <one-to-many class="com.javaee.pojo.Goods" />
        </set>
    </class>
</hibernate-mapping>
<?xml version="1.0" encoding="iso-8859-1"?>
<!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.javaee.pojo.Recode" table="RECODE" schema="SCOTT">
        <composite-id name="id" class="com.javaee.pojo.RecodeId">
            <key-many-to-one name="TUser" class="com.javaee.pojo.TUser">
                <column name="USERID" precision="22" scale="0" />
            </key-many-to-one>
            <key-many-to-one name="goods" class="com.javaee.pojo.Goods">
                <column name="GOODSID" precision="22" scale="0" />
            </key-many-to-one>
        </composite-id>
    </class>
</hibernate-mapping>
 

 

<hibernate-mapping>
    <class name="com.javaee.pojo.Goods" table="GOODS" schema="SCOTT">
        <id name="id" type="java.lang.Long">
            <column name="ID" precision="22" scale="0" />
            <generator class="increment" />
        </id>
        <many-to-one name="TUser" class="com.javaee.pojo.TUser" update="false" insert="false" fetch="select">
            <column name="ID" precision="22" scale="0" not-null="true" unique="true" />
        </many-to-one>
        <property name="name" type="java.lang.String">
            <column name="NAME" length="32" />
        </property>
        <set name="recodes" inverse="true" cascade="all-delete-orphan">
            <key>
                <column name="GOODSID" precision="22" scale="0" not-null="true" />
            </key>
            <one-to-many class="com.javaee.pojo.Recode" />
        </set>
    </class>
</hibernate-mapping>

 引用关系 goods-->user  goods-->recode goods-->user

外键类pKRecodeId(useid,goodsid)

描述复合键使用<composite-id>

级联保存 cascade="save-update"|"all-delete-orphan" 在one放的<set cascade="">配置

package com.javaee.pojo;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Userdao udao = new Userdao();
		Goodsdao gdao = new Goodsdao();
		RecodeDao rdao = new RecodeDao();
		Recode r = new Recode();
		TUser u = new TUser();
		u.setId(new Long(1));
		u.setName("浪子");
		
		Set<Goods> goodses = new HashSet<Goods>();
		Goods g1 = new Goods();
		g1.setId(new Long(3));
		g1.setName("book");
		gdao.save(g1);
		goodses.add(g1);
		u.setGoodses(goodses);
		udao.save(u);
		RecodeId rid = new RecodeId();
		rid.setGoods(g1);
		rid.setTUser(u);
		r.setId(rid);
		rdao.save(r);

	}

}
总结:
使用复合主键的场合:在设计表的时候避免使用复合主键--->主键不应该有业务逻辑,适合旧表维护,采用一个外键类,复合键来描述旧表中的代表业务的主键

 

分享到:
评论

相关推荐

    hibernate复合主键配置和使用

    《Hibernate复合主键配置与使用详解》 在Java开发中,Hibernate作为一款强大的ORM框架,大大简化了数据库操作。然而,当我们面临复杂的数据表结构,尤其是涉及到复合主键时,如何在Hibernate中进行配置和使用就显得...

    Hibernate复合主键

    "Hibernate复合主键" Hibernate复合主键是指在 Hibernate 框架中使用复合主键来唯一标识一个实体。复合主键是指由多个字段组成的主键,用于唯一标识一个实体。在本例中,我们将通过一个简单的复合主键的做关联类的...

    hibernate复合主键映射

    在Java的持久化框架Hibernate中,复合主键(Composite Key)是一种特殊的数据模型,它用于表示由多个属性共同构成的唯一标识。这种设计通常出现在实体类的某些属性组合起来才能唯一确定一个对象的情况下。本篇文章将...

    实体、范式、业务代理复合主键、关系理解分析

    在IT行业中,数据库设计是构建高效、稳定系统的关键部分,其中实体、范式、业务代理复合主键以及关系的理解和分析至关重要。以下是对这些概念的详细解析。 首先,"实体"是数据库设计中的基本概念,它代表现实世界中...

    hibernate复合主键设置

    在Java的持久化框架Hibernate中,复合主键(Composite Key)是一种特殊的数据结构,用于处理具有多个字段作为唯一标识的情况。本教程将深入探讨如何在Hibernate中设置复合主键,并提供一个可直接使用的配置示例。 ...

    hibernate复合主键的实例

    在Java的持久化框架Hibernate中,复合主键(Composite Key)是一种特殊的数据结构,用于处理具有多个字段作为唯一标识的情况。本实例将深入探讨如何在Hibernate中实现复合主键,并提供一个具体的示例来帮助理解。 ...

    sqlserver 2005 主外键-复合主键

    特别是在复杂的数据关系管理中,复合主键的应用更是能够帮助我们有效地处理多对多的关系或者是更为复杂的数据关联场景。 ### 复合主键的概念 复合主键(Composite Primary Key)是指由两个或多个字段共同组成的一...

    复合主键@IdClass

    ### 复合主键与@IdClass的理解与应用 #### 一、引言 在软件开发过程中,特别是数据库设计阶段,经常遇到需要通过多个字段来唯一标识一条记录的情况,即所谓的复合主键。复合主键相较于单一主键,在数据管理方面...

    Hibernate复合主键.

    然而,对于复合主键,一般不推荐使用自增策略,因为复合主键通常由业务数据决定,而不是自动递增。 四、复合主键的持久化操作 在进行增删改查操作时,由于复合主键的存在,我们需要确保所有关联的主键值都被正确...

    初探SQL语句复合主键与联合主键

    一、复合主键  所谓的复合主键 就是指你表的主键含有一个以上的字段组成,不使用无业务含义的自增id作为主键。 比如 create table test ( name varchar(19), id number, value varchar(10), primary key ...

    Spring Data Jpa 复合主键的实现

    Spring Data Jpa 复合主键的实现 Spring Data Jpa 复合主键的实现是指在使用 Spring Data Jpa 进行数据持久化时,如何实现复合主键的机制。复合主键是指在一个表中,使用多个字段组合成一个唯一的主键。 在 Spring...

    hibernate 无主键表映射

    这种情况通常出现在那些通过多个字段共同唯一标识一条记录的复合主键(Composite Key)场景。本文将详细介绍如何在Hibernate中进行无主键表映射,并结合提供的资源进行说明。 首先,我们要理解什么是复合主键。在...

    postgreSQL复合主键

    关于postgreSQL复合主键的一些用法,希望对大家有用。

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

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

    Hibernate中对数据库复合主键的支持.pdf

    ### Hibernate中对数据库复合主键的支持 #### 一、引言 在软件开发过程中,特别是在J2EE领域中,Hibernate作为一种流行的ORM(Object-Relational Mapping)框架被广泛使用。ORM框架的主要作用是将关系型数据库中的...

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

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

    Hibernate复合主键视频2

    请更名为 Hibernate复合主键.part2.rar

Global site tag (gtag.js) - Google Analytics