hibernate 的session.save()方法mysql报错,但是执行查询的时候又是正常的 5

测试类:publicclassaddCharactorTestextendsHibernateUtils{@TestpublicvoidaddCharactor(){Se... 测试类:
public class addCharactorTest extends HibernateUtils {

@Test
public void addCharactor() {
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();

Charactor character = new Charactor();
character.setCharactor("项目经理");
character.setRight("2");

session.save(character);
transaction.commit();
session.close();
}
}

映射文件:

<hibernate-mapping>
<class name="cn.itcast.domain.Charactor">
<id name="charactor" length="20" >
<generator class="assigned"></generator>
</id>
<property name="right" length="20" type="java.lang.String"></property>
</class>
</hibernate-mapping>

执行报错:
Hibernate: insert into Charactor (right, charactor) values (?, ?)
六月 20, 2015 2:30:51 下午 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 1064, SQLState: 42000
六月 20, 2015 2:30:51 下午 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: 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 'right, charactor) values ('2', '项目��')' at line 1
六月 20, 2015 2:30:51 下午 org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl release
INFO: HHH000010: On release of batch it still contained JDBC statements
.........

希望有哪位好心人帮帮忙!!
其实你们都没答出来,这是因为我是用的那个right是MYSQL的关键字,所以出错,换一个就好
展开
 我来答
志当存高远389
2015-06-20 · 知道合伙人互联网行家
志当存高远389
知道合伙人互联网行家
采纳数:11236 获赞数:20406
08年毕业,一直从事计算机行业,从基层做起。有较强的实践操作能力。

向TA提问 私信TA
展开全部
一、查询有如下三种方式:
1、采用createQuery()的方式,不用写sql语句,设定map对应的类名,后面可跟where条件语句:
Query query = session.createQuery("from Navigation n where n.parentid=" + parentid);
2、采用<hibernate-mapping>配置文件中配置sql语句的方式:
Query query = session.getNamedQuery("findUserById");
query.setString("userId", userId);
通过setString()方法设置筛选条件;
xml配置示例如下:
<hibernate-mapping>
<query name="findUserById">
<![CDATA[
from User u where u.id = :userId
]]>
</query>
</hibernate-mapping>
3、采用createSQLQuery()的方式,直接写sql语句:
SQLQuery query = session.createSQLQuery("select * from adm_navigation where parentid=" + parentid);
query.addEntity(Navigation.class); //需要设置对应的类
二、insert插入操作:
创建新的数据对象,设置属性之后,调用:
session.save(obj);
tx.commit()方法保存到数据库;
其中session为:Session session = new Configuration().configure().buildSessionFactory();
tx为:Transaction tx = session.beginTransaction();
需要引入包:
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.Transaction;
三、update更新操作与insert插入操作类似:
首先调用select查询方法,从数据库中读取出对象或对象数组,
然后 给对象设置新的属性值,
再调用session.save(obj)和tx.commit()方法保存到数据库中。
追问
我上面是什么错误,解决不了,望指教
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式