IT技术网www.itjs.cn

当前位置:首页 > 数据库 > SQl Server > SQL Server数据库主键及复合主键的配置

SQL Server数据库主键及复合主键的配置

发布时间:2011-07-25 18:11 来源:未知

本文主要介绍了SQL Server数据库中主键以及复合主键的配置,接下来我们就开始介绍。

一般情况下一个表中的主键,id intidentity(1,1)primary key

这是最常见的咯,用注解的形式标记这种主键也很简单

@Id     @GeneratedValue     @Column(name="RecId")     public int getRecId() {     return RecId;     }   

复合主键个人认为用到的很少,呜呜还是碰到了,由于没有经验,东装西摸,浪费了很长时间才把复合主键配好了,并且还出了很多异常,如下所示:

一個裱中可以有多個字段組成的主鍵  

create table EL_TransIdTable(     TableName nvarchar(50) ,     LastTransId nvarchar(15),     Prefix nchar(5),     DomainId nvarchar(10) primary key(TableName,DomainId)     )   

其中TableName 、DomainId两个字段作为此表的主键。

在配置中主要分为两个步骤:

1 为复合主键,建立一个复合主键类,这个类包括两个字段,(有几个字段组成主键 就包含几个字段 )这个复合主键类实现Serializable接口,有public 无参的构造方法 重写equals 和hashcode方法。

2:在实体类里面用idclass标示复合主键类 详情如下:

新建复合主键类TableDomainIdPK.java。

package com.barcode.Model;     import java.io.Serializable;     public class TableNameDomainIdPK implements Serializable{     public TableNameDomainIdPK(){     }     private String TableName;     private String DomainId;     public String getTableName() {     return TableName;     }     public void setTableName(String tableName) {     TableName = tableName;     }     public String getDomainId() {     return DomainId;     }     public void setDomainId(String domainId) {     DomainId = domainId;     }     @Override     public int hashCode() {     final int PRIME = 31;     int result =1;     result=PRIME*result+((TableName==null) 0:TableName.hashCode());     result=PRIME*result+((DomainId==null) 0:DomainId.hashCode());     return result;     }     @Override     public boolean equals(java.lang.Object obj) {     if(this ==obj){     return true;     }     if(null ==obj ){     return false;     }     final TableNameDomainIdPK other=(TableNameDomainIdPK)obj;     if(DomainId==null){     if(other.DomainId!=null){     return false;     }     }else if(!DomainId.equals(other.DomainId)){     return false;     }     if(TableName==null){     if(other.TableName!=null){     return false;     }     }else if (!TableName.equals(other.TableName)){     return false;     }            return true;     }     }   

新建实体类EL_TransIdTable.java。

实体类中的配置如下:

package com.barcode.Model;     import java.io.Serializable;     import javax.persistence.Column;     import javax.persistence.Entity;     import javax.persistence.Id;     import javax.persistence.IdClass;     import javax.persistence.Table;     @Entity        @Table(name="EL_TransIdTable")     @IdClass(TableNameDomainIdPK.class)     public class EL_TransIdTable implements Serializable {     private String TableName;     private String LastTransId;     private String Prefix;     private String DomainId;     @Id     @Column(name="TableName"nullable = false)     public String getTableName() {     return TableName;     }     public void setTableName(String tableName) {     TableName = tableName;     }        @Column(name="LastTransId")     public String getLastTransId() {     return LastTransId;     }     public void setLastTransId(String lastTransId) {     LastTransId = lastTransId;     }     @Column(name="Prefix")     public String getPrefix() {     return Prefix;     }     public void setPrefix(String prefix) {     Prefix = prefix;     }        @Id     @Column(name="DomainId"nullable = false)     public String getDomainId() {     return DomainId;     }     public void setDomainId(String domainId) {     DomainId = domainId;     }     public void Print_Info(){     System.out.println(this.getDomainId()+this.getLastTransId()+this.getPrefix()+this.getTableName());     }     }   

关于SQL Server数据库复合主键的设置就介绍到这里,希望能够对您有所收获!