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