在做项目的过程中,虽然还并没有做出自己想要的功能,但我确实学会了不少,总结如下:
一:
一般情况下一个表中的主键,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
实体类中的配置如下