Hibernate 对视图的操作及配置
(2007-07-29 21:41:46)
也是这几天,在弄Hibernate的时候,发现对于视图的mapping往往做的很不够,如果这个视图里没有主键的话,那是无法搜出要的数据类的。呵
呵,这个也就是平时说得给hibernate配视图:)不过,后面的myeclipse3.2平台上已经统一解决了这类问题,通过id类。这个针对的是过
去eclipse3.1的平台而言,同时也让自己明白了hibernate的一些小脾气:)
hibernate对视图的操作
由于视图没有主键,所以在用hibernate对视图操作就需要做点处理了,网上搜了一通也没能找到相关文章,后来突然想到了myeclipse可以帮助生成hibernate的配置文件和对应的pojo代码。
打开myeclipse,选择相关的视图,生成了配置文件和pojo类,发现pojo类生成了两个,而配置文件却一个,参看了配置文件和类,明白了是怎么回事。生成的配置文件通过了组合的方式生成,所以会对应两个类,一个类主要存放id信息,以个类存放对应的字段信息。
下面是生成的类和配置文件:
类:
public class AllTablePb implements Serializable
{
// Fields
private AllTablePbId id;
// Property accessors
public AllTablePbId getId() {
return this.id;
}
public void setId(AllTablePbId id)
{
this.id = id;
}
}
public class AllTablePbId implements java.io.Serializable
{
// Fields
private String owner;
private String tableName;
private String columnName;
private String dataType;
private String pbcCnam;
private String pbcCmnt;
// Property accessors
public String getOwner() {
return this.owner;
}
public void setOwner(String owner)
{
this.owner = owner;
}
public String getTableName() {
return this.tableName;
}
public void setTableName(String tableName)
{
this.tableName = tableName;
}
public String getColumnName() {
return this.columnName;
}
public void setColumnName(String columnName)
{
this.columnName = columnName;
}
public String getDataType() {
return this.dataType;
}
public void setDataType(String dataType)
{
this.dataType = dataType;
}
public String getPbcCnam() {
return this.pbcCnam;
}
public void setPbcCnam(String pbcCnam)
{
this.pbcCnam = pbcCnam;
}
public String getPbcCmnt() {
return this.pbcCmnt;
}
public void setPbcCmnt(String pbcCmnt)
{
this.pbcCmnt = pbcCmnt;
}
}
配置文件:
<hibernate-mapping>
<class
name="com.hhkj.workflow.bean.AllTablePb" table="V_ALLTAB_PB"
schema="CANP">
<composite-id name="id"
class="com.hhkj.workflow.bean.AllTablePbId">
<key-property name="owner"
type="string">
<column name="OWNER" length="30"
/>
</key-property>
<key-property name="tableName"
type="string">
<column name="TABLE_NAME"
length="30" />
</key-property>
<key-property name="columnName"
type="string">
<column name="COLUMN_NAME"
length="30" />
</key-property>
<key-property name="dataType"
type="string">
<column name="DATA_TYPE"
length="106" />
</key-property>
<key-property name="pbcCnam"
type="string">
<column name="PBC_CNAM"
length="30" />
</key-property>
<key-property name="pbcCmnt"
type="string">
<column name="PBC_CMNT"
length="254" />
</key-property>
</composite-id>
</class>
</hibernate-mapping>
这样就可以通过AllTablePb.getId()取得相关的信息。
通过这样对视图的操作,同样也可以用到对于那些没有定义主键的表,操作方法是一样的。
|