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的关键字,所以出错,换一个就好 展开
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的关键字,所以出错,换一个就好 展开
1个回答
2015-06-20 · 知道合伙人互联网行家
关注
展开全部
一、查询有如下三种方式:
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()方法保存到数据库中。
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()方法保存到数据库中。
追问
我上面是什么错误,解决不了,望指教
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |