String hql="update CCompeteDogInfo set dogFullscore="+sPoint+",dogState=1 where dogBloodlinenumber='"+sNGKC+"' and competeType.CCompeteInfo.infoName='"+attributeEvent.getValue()+"'";上述是我的sql语句
competeType.CCompeteInfo.infoName这一段是错误的
CCompeteDogInfo 类中的对象
private CCompeteType competeType;CCompeteType 类中的对象
private CCompeteInfo CCompeteInfo;CCompeteInfo 类中的对象
private String infoName;请大侠指导一下那个的错误,所有配置文件都是自动生成的
错误如下:
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'set dog_fullscore=5, dog_state=1 where dog_bloodlinenumber='NG7347870266' and in' at line 1请详细说明..
competeType.CCompeteInfo.infoName这一段是错误的
CCompeteDogInfo 类中的对象
private CCompeteType competeType;CCompeteType 类中的对象
private CCompeteInfo CCompeteInfo;CCompeteInfo 类中的对象
private String infoName;请大侠指导一下那个的错误,所有配置文件都是自动生成的
错误如下:
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'set dog_fullscore=5, dog_state=1 where dog_bloodlinenumber='NG7347870266' and in' at line 1请详细说明..
解决方案 »
- 手机如何访问电脑本地服务器
- 请问map类型的request到底是什么样的东西?不是很清楚。
- tomcat容器里报该错误如何解决
- 求把一個含二位小數的金額數轉換成英文
- 有关参数提交的安全性问题,有经验或有兴趣的欢迎参与讨论!
- request.getRequestDispatcher("/index.jsp").forward(request,response);与普通的forward有何区别?
- 条件编译与无条件编译的区别
- 视频直播 在线播放方面设计解决方案
- 高分求tomcat3.2.3和apache1.3.14整合文档
- POST http://localhost:8080/user/login 404 找不到错误原因
- 有Hibernate中是否能调用存储过程
- 弱弱的问句:<c:set var="leftList" value="${availableRoles}" scope="request"/>里的$符号啥意思?
CCompeteType competeType=new CCompeteType();//
competeType.CCompeteInfo.infoName=attributeEvent.getValue(); //
String hql="update CCompeteDogInfo set dogFullscore="+sPoint+",dogState=1 where dogBloodlinenumber='"+sNGKC+"' and competeType='"+competeType'";
competeType.infoName
这里怎么有一个in???查看一下!
你这样用还是JDBC思路,没把hibernate真正用起来
既然是更新数据
那你传回数据库的就应该是一个游离态数据
他会同持久态的对比,修改相应内容
set dog_fullscore=5, dog_state=1 where dog_bloodlinenumber='NG7347870266' and in和你的hql匹配不上,把全部代码贴出来,还有myeclipse有个hql的调试插件你可以选把hql拿去调试下就知道问题的所在啦
near 'set dog_fullscore=5, dog_state=1 where dog_bloodlinenumber='NG7347870266' and in'
附近有语法错误,你说
competeType.CCompeteInfo.infoName这一段是错误的 。
单独这么用应该是可以的,但是这里是否是需要加上别名。试试,希望有用。
另外,把hibernate的show_sql打开,看看生成的hibernate生成的sql是什么。
然后使用Hibernate模板的Update方法就可以了 为什么还要这样做呢?请教!!
我就是想问一下,如果直接写一个update语句为什么条件写成那样会不行?有没有大哥能帮忙解决下,解决了这个问题,100分至少给你80
说实话,你取的名字太费解,where dogBloodlinenumber='"+sNGKC+"' and competeType='"+competeType'能查出数据??
那competeType是一个字段了?
merge方法是对象在有修改情况下才会更新你的问题不明确了!
where dogBloodlinenumber='"+attributeNGKCRegNumberValuei+"' and competeType.CCompeteInfo.infoName='"+attributeEvent.getValue()+"'"
这个条件是可以查出来的
而在update语句中这个where条件是不可以的.所以我只能先找,然后在更新
sql="update ...."
你调用createQuery或者其他方法报错是吧?然后你先查询出来,然后在调用merge()
没错???
merge()和update()是通过对象ID去判断他是否需要更新
hibernate里面更新都是根据ID去判断的,update语句是不需要写的
如果你真要写,那就用createSQLQuery,这个你要自己测试,我也不清楚他是否支持update
但是你的HQL必须换成SQL
同意!!!
competeType 对象没有 CCompeteInfo 这个属性 应该直接用 competeType.infoName
from CCompeteDogInfo where dogBloodlinenumber='"+attributeNGKCRegNumberValuei+"' and competeType.CCompeteInfo.infoName='"+attributeEvent.getValue()+"'"
这个是查找的hql,正确
我找到CCompeteDogInfo 的对象后,然后set一些属性,在调用merge方法不就更新了么,这个是可以的我最早是自己写了一个方法
Session session=this.getSession();
int result=0;
Query q=session.createQuery(hql);
result=q.executeUpdate();
return result;
我想用一个sql就根据条件更新了数据库,但是我写的update CCompeteDogInfo set *** where(一样的条件)就不正确,我想问一下,为什么不行
TYPE type=new TYPE();
type.setName("abc");
session.update(type);
在做修改的时候hibernate会做一个脏数据处理看你的数据有没有变如果有变化作出提交如果没有变化不提交不做任何改变
但是没找到错误
你还是加个别名试一下吧String hql = "update CCompeteDogInfo c set c.dogFullscore=" + sPoint
+ ",c.dogState=1 where c.dogBloodlinenumber='" + sNGKC
+ "' and c.competeType.CCompeteInfo.infoName='"
+ attributeEvent.getValue() + "'";
MYSQL我没用过,我不知道有啥特殊语法没有。。
你把控制台生成的SQL语句拿出来,
就能找到你的错误了
建议通过session获取connection的连接,然后用jdbs来做。
3级的关系 我都能成功访问到,问题不在这
看看映射文件和实体类吧
谢谢