Hibernate 中的联合主键

这篇博客介绍了Hibernate中联合主键的概念和应用场景,特别是在处理多对多关系表时的使用。通过一个选课表的例子,解释了如何在SQL 2005中利用联合主键来记录学生与课程之间的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type=text/javascript> </script>

      今天生成hibernate映射文件时,看到文件中属性是<key-property>,感觉奇怪,以前没接触过,查了一下资料,终于弄明白了。

      现整理出来,以便以后查阅:

     

      1、什么是联合主键?

            联合主键就是表中2个或者2个以上的字段做为这个表的主键,通常多对多的关系表中使用联合主键.例如有表学生,表课程,另外一个表选课,选课表用来记录每个学生所选的课程,这个选课表就可以用联合主键.
SQL 2005中可以用

SQL code
CREATE TABLE [学生]( [学生ID] [int] NOT NULL, [学生姓名] [varchar(20)] NULL, CONSTRAINT [PK_学生] PRIMARY KEY CLUSTERED ( [学生ID] ) ) CREATE TABLE [课程]( [课程ID] [int] NOT NULL, [课程名称] [varchar(50)] NULL, CONSTRAINT [PK_课程] PRIMARY KEY CLUSTERED ( [课程ID] ) ) CREATE TABLE [选课]( [学生ID] [int] NOT NULL, [课程ID] [int] NOT NULL, CONSTRAINT [PK_选课] PRIMARY KEY CLUSTERED ( [学生ID], [课程ID] ) )
2)联合主键SQL语句怎么写?

主键是数据库表的一个重要属性,建立主键可以避免表中存在完全相同的记录,也就是说主键在一张表中的记录值是唯一的。

    建立主键有两种方法:一种是在数据库提供的GUI环境中建立,另一种是通过SQL语句执行建立,下面分别介绍。

      1.在数据库提供的GUI环境中建立(以SQL7为例)。

    输入表信息后按Ctrl键同时选中多行,然后点上面的主键按钮就行了。

    2.通过SQL语句执行建立。又分两种,一是在建表语句中直接写,二是建表之后更改表结构。

    在建表语句中直接写:

      Create Table 表名 (字段名1 Int Not Null,
                    字段名2 nvarchar(13) Not Null Primary Key (字段名1, 字段名2),
                    字段名3…………
                    字段名N………… )

    建表之后更改表结构:

     CREATE TABLE 表名 (字段名1 Int Not Null,
                       字段名2 nvarchar(13) Not Null
                       字段名3…………
                       字段名N…………)
    GO

    ALTER TABLE 表名 WITH NOCHECK ADD
    CONSTRAINT [PK_表名] PRIMARY KEY  NONCLUSTERED
     (
          [字段名1],
          [字段名2]
     )
    GO

3)Hiebrnate映射文件中单个主键和联合主键的区别?
单个主键:<id> <property>
联合主键:<composite-id> <composite-id>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值