hibernate中对联合主键数据保存的一种处理方式
2013-09-22 21:32
465 查看
1、有二张表:CODE_TABLE和CODE_TABLE_TYPE,具体结构如下:
2、对应的实体BEAN如下:
(1)、CodeTableType.java
(2)、CodeTable .java
(3)、CodeTablePK.java
3、对CODE_TABLE的操作
CREATE TABLE CODE_TABLE ( TYPE_ID VARCHAR(12) NOT NULL, ID VARCHAR(8) NOT NULL, NAME VARCHAR(60) NOT NULL, DESC VARCHAR(300) NOT NULL, CONSTRAINT FK_CODE_TYPE FOREIGN KEY (TYPE_ID) REFERENCES CODE_TABLE_TYPE (ID), CONSTRAINT PK_CODE_TABLE PRIMARY KEY (ID, TYPE_ID) )
CREATE TABLE CODE_TABLE_TYPE ( ID VARCHAR(12) NOT NULL, NAME VARCHAR(60) NOT NULL, DESC VARCHAR(200) NOT NULL, ORDER INTEGER NOT NULL DEFAULT 0, CONSTRAINT PK_CODE_TYPE PRIMARY KEY (ID) )
2、对应的实体BEAN如下:
(1)、CodeTableType.java
@Entity @Table(name = "CODE_TABLE_TYPE", uniqueConstraints = {}) @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) @Operator() @EntityIsLog() public class CodeTableType implements Cloneable { @Listable(key="codetabletype.id",width=10,align="center") @Filter() private String id; @Listable(key="codetabletype.codeTableTypeName",width=12,align="left") @Filter() private String codeTableTypeName; @Listable(key="codetabletype.codeTableTypeDesc",width=20,align="left") @Filter() private String codeTableTypeDesc; private Set<CodeTable> codeTables=new HashSet<CodeTable>(); public CodeTableType() { } @Id @Column(name = "ID", unique = true, nullable = false, insertable = true, updatable = false,length = 12) @Order(value=1) public String getId() { return id; } public void setId(String id) { this.id = id; } @Column(name = "NAME", unique = false, nullable = false, insertable = true, updatable = true, length = 60) @Order(value=2) public String getCodeTableTypeName() { return codeTableTypeName; } public void setCodeTableTypeName(String codeTableTypeName) { this.codeTableTypeName = codeTableTypeName; } @Column(name = "DESC", unique = false, nullable = false, insertable = true, updatable = true, length = 200) @Order(value=4) public String getCodeTableTypeDesc() { return codeTableTypeDesc; } public void setCodeTableTypeDesc(String codeTableTypeDesc) { this.codeTableTypeDesc = codeTableTypeDesc; } @OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, mappedBy = "codeTableType") @Order(value=-1) public Set<CodeTable> getCodeTables() { return codeTables; } public void setCodeTables(Set<CodeTable> codeTables) { this.codeTables = codeTables; } }
(2)、CodeTable .java
@Entity @Table(name = "CODE_TABLE", uniqueConstraints = {}) @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) @Operator() @IdClass(CodeTablePK.class) public class CodeTable { @Listable(key="codetable.id",width=10,align="center") @Filter() @Viewable() private String id; @Listable(key="codetable.codetabletype",width=12,align="left") private CodeTableType codeTableType; @Listable(key="codetable.name",width=10,align="left") @Filter() @Viewable() private String name; @Listable(key="codetable.desc",width=20,align="left") @Viewable() private String desc; public CodeTable() { } @Id @Column(name = "ID", unique = true, nullable = false, insertable = true, updatable = false,length = 8) public String getId() { return id; } public void setId(String id) { this.id = id; } @Id @ManyToOne(cascade = {}, fetch = FetchType.LAZY) @JoinColumn(name="TYPE_ID", unique = false, nullable = false, insertable = true, updatable = false) @Relation(key="id",title ="codeTableTypeName") public CodeTableType getCodeTableType() { return codeTableType; } public void setCodeTableType(CodeTableType codeTableType) { this.codeTableType = codeTableType; } @Column(name = "NAME", unique = false, nullable = false, insertable = true, updatable = true, length = 60) public String getName() { return name; } public void setName(String name) { this.name = name; } @Column(name = "DESC", unique = false, nullable = true, insertable = true, updatable = true, length = 600) public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; } }
(3)、CodeTablePK.java
@Embeddable public class CodeTablePK implements Serializable { private String id; private CodeTableType codeTableType; public CodeTablePK() { } public CodeTablePK(String id, CodeTableType codeTableType) { this.id = id; this.codeTableType = codeTableType; } @Column(name = "ID", unique = true, nullable = false, insertable = true, updatable = false,length = 8) public String getId() { return id; } public void setId(String id) { this.id = id; } @OneToOne(cascade = {}, fetch = FetchType.LAZY) @JoinColumn(name="TYPE_ID", unique = false, nullable = false, insertable = true, updatable = false) @Relation(key="id",title ="codeTableTypeName") public CodeTableType getCodeTableType() { return codeTableType; } public void setCodeTableType(CodeTableType codeTableType) { this.codeTableType = codeTableType; } }
3、对CODE_TABLE的操作
CodeTableType ct = codeTableTypeService.get(type); CodeTablePK pk = new CodeTablePK(); pk.setCodeTableType(ct); pk.setId("AA"); CodeTable obj = getHibernateTemplate().get(CodeTable.class, pk);
相关文章推荐
- hibernate联合主键生成机制(annotation方式)
- SharedPerferences 保存数据,android提供用于保存简单配置信息,标记,用户数据的一种方式
- Hibernate保存数据自动生成主键出现奇怪异常Duplicate entry '0' for key 1
- 0012、node 之简单筛选后台数据以及需要分页时的一种处理方式
- 联合主键用Hibernate注解映射的三种方式
- Hibernate学习_010_联合主键映射(Annotation方式)
- hibernate 联合主键生成机制(组合主键XML配置方式)
- Hibernate中联合主键映射时有一个也是外键的一种解决方法
- hibernate联合主键生成机制(annotation方式)
- hibernate联合主键生成机制(annotation方式)
- Hibernate联合主键映射规则和数据查询原理
- 数据库根据时间后一条数据减去前一条数据的一种简单处理方式
- Hibernate初学者---schemaExport自动生成联合主键关联数据表
- eclipse中保存数据到数据库中乱码简单处理方式
- hibernate联合主键 注解方式
- 使用Hibernate配置联合主键的两种方式
- Java学习之道:hibernate联合主键的创建方式
- hibernate联合主键 注解方式
- Hibernate联合主键映射规则和数据查询原理
- hibernate中联合主键的定义方式