随笔-8  评论-19  文章-2  trackbacks-0

      由于视图没有主键,所以在用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()取得相关的信息。
      感觉myeclipse的确不错,特别是对于使用hibernate还不是非常熟练的人来说,通过它可以帮解决不少问题。
      通过这样对视图的操作,同样也可以用到对于那些没有定义主键的表,操作方法是一样的。
      呵呵,个人的一点体会,欢迎大家多提意见。

posted on 2006-06-01 16:21 jie_java 阅读(10968) 评论(15)  编辑  收藏

评论:
# re: hibernate对视图的操作 2006-08-07 13:13 | xx_hm
我从数据库中查出一个LIST
List list =(List)db.find("from VPatent");
我想把这个list 的第一个元素附给一个对象,然后我想将这个对象里的属性取出,象a.getNo();a.getSex();请问这个怎么实现,我也是出现了两个类  回复  更多评论
  
# re: hibernate对视图的操作 2006-10-10 13:16 | TerryZeng
我使用了Spring来管理事务,在实例化DAO类后,要怎么得到视图中的数据?
AllTablePbDAO aDAO=AllTablePbDAO.getFromApplicationContext(this.getWebApplicationContext());

AllTablePbId id=new AllTablePbId ();
id.setEmpId(1);假设有ID为1的记录
AllTablePbe aa=empInfoDAO.findById(id);
System.out.println(aa.getId().gettableName());

结果就是Null Point异常,还忘高手指点  回复  更多评论
  
# re: hibernate对视图的操作 2006-10-10 13:16 | TerryZeng
我使用了Spring来管理事务,在实例化DAO类后,要怎么得到视图中的数据?
AllTablePbDAO aDAO=AllTablePbDAO.getFromApplicationContext(this.getWebApplicationContext());

AllTablePbId id=new AllTablePbId ();
id.setEmpId(1);假设有ID为1的记录
AllTablePbe aa=empInfoDAO.findById(id);
System.out.println(aa.getId().gettableName());

结果就是Null Point异常,还忘高手指点  回复  更多评论
  
# re: hibernate对视图的操作 2006-10-10 13:16 | TerryZeng
我使用了Spring来管理事务,在实例化DAO类后,要怎么得到视图中的数据?
AllTablePbDAO aDAO=AllTablePbDAO.getFromApplicationContext(this.getWebApplicationContext());

AllTablePbId id=new AllTablePbId ();
id.setEmpId(1);假设有ID为1的记录
AllTablePbe aa=empInfoDAO.findById(id);
System.out.println(aa.getId().gettableName());

结果就是Null Point异常,还忘高手指点  回复  更多评论
  
# re: hibernate对视图的操作[未登录] 2007-05-16 10:10 | liu
我出现的问题和你说的一样哦!我用的eclipse3.2+myeclipse3.2,hibernate映射一个表(aa)的时候出现了两个类 Aa.java和AaId.java,现在我想查询这个表的信息,得到个集合"from Aa",可是我想取某个具体的信息是就报错java.lang.NullPointerException,比如我想取(Aa a=new Aa();) --a.getName(),它为什么报错了,我用a.getId().getName()也报同样的错,希望你能帮我看一下是什么问题,希望知道这个错误的高手给我解答一下,谢谢..  回复  更多评论
  
# re: hibernate对视图的操作 2007-09-17 17:41 | vistarw
myE给hibernate生成的视图是用的复合主键,那个XXId类中不能有空值,如果有空就返回的是null了!

可以配置临时表来解决!  回复  更多评论
  
# re: hibernate对视图的操作 2007-11-28 13:08 | hello
@vistarw
临时表来? 能解释一下吗  回复  更多评论
  
# re: hibernate对视图的操作 2008-01-11 15:07 | 可克
哥们,帮帮我吧。我的也是返回空值呀?苦恼!!!samxx8@163.com  回复  更多评论
  
# re: hibernate对视图的操作 2008-01-21 23:50 | shenwf
可以配置临时表来解决,临时表怎么弄?  回复  更多评论
  
# re: hibernate对视图的操作 2008-05-23 15:46 | Atomic
谁用视图啊...那还要Hibernate干什么用~不支持用这种东西  回复  更多评论
  
# re: hibernate对视图的操作 2008-12-02 17:43 | sss
@可克
你的记录里有NULL,所以会为空!
建议你去掉表中的NULL试试!
  回复  更多评论
  
# re: hibernate对视图的操作[未登录] 2011-09-06 15:55 | hehe
有用,谢了  回复  更多评论
  
# re: hibernate对视图的操作 2011-12-20 13:54 | 走过的陌生人
您好! 我的视图中 字段中就是存在着null的情况。(数据就是这样的,没有办法去掉null的情况)
这种情况下怎么处理呢?
还望高手指点  回复  更多评论
  
# re: hibernate对视图的操作 2012-03-02 12:15 | slong
@走过的陌生人
isnull(字段值,0)字段值为 null 则返回0;  回复  更多评论
  
# re: hibernate对视图的操作 2014-05-26 11:22 | 肖叮
@TerryZeng
List list=empInfoDAO.findByProperty("id.empId", empId);
可以参考下:
http://hi.baidu.com/terry05/item/66a2a6d2bc9571e7b2f77761  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: