1、有二张表:CODE_TABLE和CODE_TABLE_TYPE,具体结构如下:
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);