浏览 3939 次
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-07-26
public class SmUsersTbDAOimpl extends HibernateDaoSupport implements SmUserTbDAO{ /* * 读取用户权限值 */ public List ReadUserValue(String id) { String HQL = "from SmUsersTb where userno ='"+id+"'"+" and operprivno like '%ISPT%'"; return getHibernateTemplate().find(HQL); } } 当我从外面调用的时候,如果库里有多条记录,每次返回的记录的条数会是正确的,但是内容都是重复.只会找出第一条记录,找了半天也不知道是哪出错了.其他的方法都行,就这个不行.哪位帮忙看看. public class SmUsersTb { /* * 用户权限表对应用户管理中心系统表sm_user_priv_tb * 功能:查找用户权限 */ private String userno;// 用户ID private String operprivno;// 用户权限 public SmUsersTb() {} public SmUsersTb(String userno,String operprivno) { this.userno =userno; this.operprivno = operprivno; } public String getOperprivno() { return operprivno; } public void setOperprivno(String operprivno) { this.operprivno = operprivno; } public String getUserno() { return userno; } public void setUserno(String userno) { this.userno = userno; } } <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Mapping file autogenerated by MyEclipse - Hibernate Tools --> <hibernate-mapping> <class name="com.sunyard.ispt.model.impl.SmUsersTb" table="sm_user_priv_tb" schema="dbo" catalog="SYSTEM_MANAGE_DB"> <id name="userno" type="java.lang.String"> <column name="user_no" length="20"/> </id> <property name="operprivno" type="java.lang.String"> <column name="oper_priv_no" length="50" not-null="false"/> </property> </class> </hibernate-mapping> 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-07-26
wanwok 写道 String HQL = "from SmUsersTb where userno ='"+id+"'"+" and like '%ISPT%'"; 既然userno做为ID并且等于某个值了,后面的like '%ISPT%'"有用吗?这个HQL查来查去只可能是1条或者0条记录, 如果查出多条记录,那么user_no列根本不是Primary Key。~~~~~~~~~~· |
|
返回顶楼 | |
发表时间:2008-07-26
是的,这个表是没有主键的。通过上面的方法是想查到userno下的所有operprivno.这里对于同一个用户可能有很多的权限的。operprivno like '%ISPT%'" 这样我只是减少一点范围,因为表里的数据量比较大。
刚刚在一个网页上看到一点内容,对hibernate不是很了解,是不是每个模版类都需要一个主键。通过Eclipse映射过来的时候形成了一个联合主键。但是我觉得很不好用,就去掉了。 |
|
返回顶楼 | |
发表时间:2008-07-27
wanwok 写道 是的,这个表是没有主键的。通过上面的方法是想查到userno下的所有operprivno.这里对于同一个用户可能有很多的权限的。operprivno like '%ISPT%'" 这样我只是减少一点范围,因为表里的数据量比较大。
刚刚在一个网页上看到一点内容,对hibernate不是很了解,是不是每个模版类都需要一个主键。通过Eclipse映射过来的时候形成了一个联合主键。但是我觉得很不好用,就去掉了。 因为你没有在数据库对此表做主键约束。所以Eclipse映射过啦就是联合主键。 唯一的无意义的主键,主键就像是身份证一样标识一个数据库row,最好就是唯一的一个字段,不要联合主键。不能是有意义的字段,比如说身份证号码做主键,要是有一天输入错误一个身份证号码,而N个关联表的N个记录已经指向这个身份证号码的时候,你就知道修改起来什么是痛苦了。特别是在正在运行的数据库服务器上。 |
|
返回顶楼 | |
发表时间:2008-07-30
大概明白是怎么回事了,我改用SQLQuery连上了,还是很感谢你的回复.
|
|
返回顶楼 | |
发表时间:2009-02-03
鼎
.hbm配置文件主键配置问题 |
|
返回顶楼 | |