Hibernate中hql对属性class的查询条件。 100
假设A类只有id属性,B类和C类是A类的子类,带有其他属性。三个类都是映射类,映射不同的表。在映射类TabX类中,有一个A类的属性a,对应B类或C类对应数据表的记录。这种...
假设A类只有id属性,B类和C类是A类的子类,带有其他属性。三个类都是映射类,映射不同的表。
在映射类TabX类中,有一个A类的属性a,对应B类或C类对应数据表的记录。
这种情况下,可以新增TabX类的数据,属性a的赋值可以是B类或C类的变量。
使用带有属性a的类型条件的hql对X类做查询,hql是这样的:
from TabX x where x.a.class = 'B' 或 from TabX x where x.a.class = 'C'
但都报异常:
Caused by: java.sql.SQLException: Unknown column 'a1_1_.id' in 'where clause'
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2975)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1600)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1695)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3004)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1128)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1222)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56)
请问这种应该怎么解决呢?
是这样查询的:
Query query = session.createQuery(hql);
List<Tabx> list = query.list(); 展开
在映射类TabX类中,有一个A类的属性a,对应B类或C类对应数据表的记录。
这种情况下,可以新增TabX类的数据,属性a的赋值可以是B类或C类的变量。
使用带有属性a的类型条件的hql对X类做查询,hql是这样的:
from TabX x where x.a.class = 'B' 或 from TabX x where x.a.class = 'C'
但都报异常:
Caused by: java.sql.SQLException: Unknown column 'a1_1_.id' in 'where clause'
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2975)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1600)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1695)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3004)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1128)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1222)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56)
请问这种应该怎么解决呢?
是这样查询的:
Query query = session.createQuery(hql);
List<Tabx> list = query.list(); 展开
2个回答
展开全部
我可以用HQL查询或删除来操作这个新数组中的记录吗?----不能,hql语句只要操作在配置在Hiberate中的对象.你都已经把记录取出来放在数组中了,,想删除,直接从数组中删除不可以么????你是不是这个意思呢,,从数组中删除记录,还想同步的从数据库里也删除相应的记录呢?????希望有所提示,有空到51cto,365testing进一步交流!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
异常说你列名写错了
追问
列名没有写错,hql写成from TabX x where x.a = null,查询就不会报异常。
这种对属性class的查询方式,是从书《Hibernate3.0完整中文版教程.pdf》中看到的,下载自:
http://download.csdn.net/download/u0124544
29/9144793。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询