分享

Hibernate?对视图的操作及配置

 Ethan的博客 2011-07-03

Hibernate 对视图的操作及配置

(2007-07-29 21:41:46)
标签:

杂谈

分类: MSN搬家

   也是这几天,在弄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()取得相关的信息。

通过这样对视图的操作,同样也可以用到对于那些没有定义主键的表,操作方法是一样的。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多