hibernate3中使用 formula,例如: <property name="更新员id" formula="( select nvl(max ( t.更新员id),0 ) from T_User t where t.userid = id )" type="int" />
多谢楼上的 你说的formula看看先
我的测试代码怎么可以?我用的是2.1.8 public Product getProduct(Serializable id) { Product p= this.productDao.getProduct(id); System.out.println("sid=" + p.getSalesman().getId()); System.out.println("sName=" + p.getSalesman().getUsername()); return p; }控制台显示如下: Hibernate: select product0_.id as id0_, product0_.name as name0_, product0_.Salesman_ID as Salesman3_0_ from Product product0_ where product0_.id=? sid=test1 Hibernate: select user0_.id as id0_, user0_.username as username0_ from T_User user0_ where user0_.id=? sName=测试人1
我想问的主要是第三点??意思可能还说的不够明白。
既:订单表的更新员与用户表是多对一的关系,我只想取更新员的值(既int),而不想取出相关用户表中的其他信息;因为直接调用POJO中的getUpdatedBy().getId()方法来取int值时,已经同时把用户表中的其它信息也取出了??
hibernate3中使用 formula,例如:
<property name="更新员id" formula="( select nvl(max ( t.更新员id),0 ) from T_User t where t.userid = id )" type="int" />
你说的formula看看先
Product p= this.productDao.getProduct(id);
System.out.println("sid=" + p.getSalesman().getId());
System.out.println("sName=" + p.getSalesman().getUsername());
return p;
}控制台显示如下:
Hibernate: select product0_.id as id0_, product0_.name as name0_, product0_.Salesman_ID as Salesman3_0_ from Product product0_ where product0_.id=?
sid=test1
Hibernate: select user0_.id as id0_, user0_.username as username0_ from T_User user0_ where user0_.id=?
sName=测试人1
程序运行是没错,但我想要的仅仅是Id,如p.getSalesman().getId();
但是在我看来,调用p.getSalesman()时,就已经把用户的所有信息都取出了(不知道是不是这样??);
但是我的程序大部分都只是需要ID而已,不需要查询关联的表
(我想保留多对一映射,又可单单取ID而不用查询关联表)
Hibernate果真厉害
Thank you