用hibernate生成的两个类:
1.FasbspTab
2.Fasbspzt
我想用inner join方式连接两个表执行如下语句:
hqlstr = "from FasbspTab fas join fetch fas.Fasbspzt";
或语句:
hqlstr = "from FasbspTab fas join fas.Fasbspzt";都报错如下:
org.hibernate.QueryException: could not resolve property: Fasbspzt of: tableclass.Fasbsptab.FasbspTab [from tableclass.Fasbsptab.FasbspTab fas join fetch fas.Fasbspzt]但是单独执行
hqlstr = "from FasbspTab";
或者
hqlstr = "from Fasbspzt";
却是正确的
说明这两个类写得应该是正确的不知道原因在哪,请各位帮帮忙
1.FasbspTab
2.Fasbspzt
我想用inner join方式连接两个表执行如下语句:
hqlstr = "from FasbspTab fas join fetch fas.Fasbspzt";
或语句:
hqlstr = "from FasbspTab fas join fas.Fasbspzt";都报错如下:
org.hibernate.QueryException: could not resolve property: Fasbspzt of: tableclass.Fasbsptab.FasbspTab [from tableclass.Fasbsptab.FasbspTab fas join fetch fas.Fasbspzt]但是单独执行
hqlstr = "from FasbspTab";
或者
hqlstr = "from Fasbspzt";
却是正确的
说明这两个类写得应该是正确的不知道原因在哪,请各位帮帮忙
解决方案 »
- StandardWrapper[:AAAServlet]: Waiting for 4 instance(s) to be deallocated
- 求助:关于cookie
- 还是这个问题,邮件追踪问题
- cs结构、css结构具体是什么?
- ORDER BY 编号 1 标识的 SELECT 项包含一个变量,作为标识列位置的表达式的一部分。按照引用列名的表达式排序时,只允许使用变量
- 小女子想请教:script实现自定义函数的问题!
- 请教个抓取网页内容的问题
- (进者有份)如何把服务器发送的数据在IE浏览器上显示出来,(动态的,是服务器不是数据库)
- 《即时应用Java Servlets》这本书的另外一个问题
- java发送报文解析报文异常,异常信息:java.lang.NullPointerException
- jsp中 string数组转化为int数组
- jsp基础问题,请老手一分钟指点下
2: left outer join (左外连接)
3: right outer join(右外连接)
4: full join(全连接--不常用) inner jion 可以简写为join. 正常情况下必须要建关联。
两个实体类要关联再这么写哦
请问如何关联?我看书上或者在网上查的写法都这样
hqlstr = "from FasbspTab fas join fetch fas.Fasbspzt";
或语句:
hqlstr = "from FasbspTab fas join fas.Fasbspzt";但在我这里就不能正确执行。
而且这两个类FasbspTab和Fasbspzt的写法,大小写是没有错误的,我可以直接在代码中这样写
FasbspTab.或者Fasbspzt.后面就出现他们的方法属性提示。
呵呵~~你看书很不仔细呀。hqlstr = "from FasbspTab fas join fetch fas.Fasbspzt"; fas.Fasbspzt后面的Fasbspzt是不是掉了一个s(fas.Fasbspzts)?你的fas实体对象里是不是有一个Set的属性,名字叫Fasbspzts?简单说,报错信息已经明确指出:没有一个叫做"Fasbspzt"的属性在FasbspTab实体对象里。
所以,我猜想你这个是一对多关系,在FasbspTab实体里应该有一个集合,它的名字叫Fasbspzts(如果你用的是Eclipse,并且实体类是通过反向工程自动生成的,那么它一定是叫Fasbspzts)你自己再仔细看看。
FasbspTab和Fasbspzt分别是两个数据库表FASBSP_TAB和FASBSPZT对应生成的两个hibernate包下的两个类
Fasbspzt的写法是没有错的,Fasbspzt不是FasbspTab的一个属性我想把后台的两个表用inner join连接
正常的sql语句应该这样写:
select fasbsp_tab.*,fasbspzt.* from fasbsp_tab inner join fasbspzt on fasbsp_tab.faid0=fasbspzt.faid0
(在查询分析器里执行正确)现在转为hql语句,我在书上查到得写法是这样
hqlstr = "from FasbspTab fas join fetch fas.Fasbspzt";
但执行报上述错误请问这种写法有没有问题?要如何写才正确?是不是要在FasbspTab.hbm.xml和Fasbspzt.hbm.xml下配置东西?我是没有配置的。Fasbspzt.hbm.xml的主体内容如下:
<hibernate-mapping>
<class name="tableclass.Fasbspzt.Fasbspzt" table="FASBSPZT" schema="ZZJG">
<id name="faid0" type="java.lang.String">
<column name="FAID0" length="20" />
<generator class="assigned" />
</id>
<property name="sendtime" type="java.util.Date">
<column name="SENDTIME" length="7" />
</property>
<property name="sendsign" type="java.lang.String">
<column name="SENDSIGN" length="1" />
</property>
<property name="isdelete" type="java.lang.String">
<column name="ISDELETE" length="1" />
</property>
<property name="chk" type="java.lang.String">
<column name="CHK" length="1" />
</property>
</class>
</hibernate-mapping>
FasbspTab.hbm.xml的主体内容如下:
<hibernate-mapping>
<class name="tableclass.Fasbsptab.FasbspTab" table="FASBSP_TAB" schema="ZZJG">
<composite-id name="id" class="tableclass.Fasbsptab.FasbspTabId">
<key-property name="faid0" type="java.lang.String">
<column name="FAID0" length="20" />
</key-property>
<key-property name="fjdm0" type="java.lang.String">
<column name="FJDM0" length="2" />
</key-property>
</composite-id>
<property name="fabh0" type="java.lang.String">
...
</property>
</class>
</hibernate-mapping>
hqlstr = "from FasbspTab fas, Fasbspzt fazt where fas.id.faid0 = fazt.faid0";
替换