遇到一个很莫名其妙的问题

daniel55 2011-06-22 12:17:14
2011-06-22 00:02:30 [日志信息] Hibernate 3.2.5
2011-06-22 00:02:30 [日志信息] hibernate.properties not found
2011-06-22 00:02:30 [日志信息] Bytecode provider name : cglib
2011-06-22 00:02:30 [日志信息] using JDK 1.4 java.sql.Timestamp handling
2011-06-22 00:02:30 [日志信息] configuring from resource: /hibernate.cfg.xml
2011-06-22 00:02:30 [日志信息] Configuration resource: /hibernate.cfg.xml
2011-06-22 00:02:30 [日志信息] Reading mappings from resource : com/eportal/ORM/category.hbm.xml
2011-06-22 00:02:30 [日志信息] Mapping class: com.eportal.ORM.Category -> t_category
2011-06-22 00:02:30 [日志信息] Reading mappings from resource : com/eportal/ORM/merchandise.hbm.xml
2011-06-22 00:02:30 [日志信息] Mapping class: com.eportal.ORM.Merchandise -> t_merchandise
2011-06-22 00:02:30 [日志信息] Reading mappings from resource : com/eportal/ORM/order.hbm.xml
2011-06-22 00:02:30 [日志信息] Mapping class: com.eportal.ORM.Order -> t_order
2011-06-22 00:02:30 [日志信息] Reading mappings from resource : com/eportal/ORM/memberLevel.hbm.xml
2011-06-22 00:02:30 [日志信息] Mapping class: com.eportal.ORM.MemberLevel -> t_memberLevel
2011-06-22 00:02:30 [日志信息] Reading mappings from resource : com/eportal/ORM/member.hbm.xml
2011-06-22 00:02:30 [日志信息] Mapping class: com.eportal.ORM.Member -> t_member
2011-06-22 00:02:30 [日志信息] Reading mappings from resource : com/eportal/ORM/subcategory.hbm.xml
2011-06-22 00:02:30 [日志信息] Mapping class: com.eportal.ORM.Subcategory -> t_subcategory
2011-06-22 00:02:30 [日志信息] Reading mappings from resource : com/eportal/ORM/mer2order.hbm.xml
2011-06-22 00:02:30 [日志信息] Mapping class: com.eportal.ORM.Mer2Order -> t_mer2order
2011-06-22 00:02:30 [日志信息] Configured SessionFactory: null
2011-06-22 00:02:30 [日志信息] Mapping collection: com.eportal.ORM.Subcategory.mer -> t_merchandise
2011-06-22 00:02:30 [日志信息] Using Hibernate built-in connection pool (not for production use!)
2011-06-22 00:02:30 [日志信息] Hibernate connection pool size: 20
2011-06-22 00:02:30 [日志信息] autocommit mode: false
2011-06-22 00:02:30 [日志信息] using driver: com.mysql.jdbc.Driver at URL: jdbc:mysql://localhost:3306/db_manager
2011-06-22 00:02:30 [日志信息] connection properties: {user=root, password=****}
2011-06-22 00:02:30 [日志信息] RDBMS: MySQL, version: 5.1.40-community
2011-06-22 00:02:30 [日志信息] JDBC driver: MySQL-AB JDBC Driver, version: mysql-connector-java-5.0.0-beta ( $Date: 2005-11-17 16:14:47 +0100 (Thu, 17 Nov 2005) $, $Revision$ )
2011-06-22 00:02:30 [日志信息] Using dialect: org.hibernate.dialect.MySQLDialect
2011-06-22 00:02:30 [日志信息] Using default transaction strategy (direct JDBC transactions)
2011-06-22 00:02:31 [日志信息] No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
2011-06-22 00:02:31 [日志信息] Automatic flush during beforeCompletion(): disabled
2011-06-22 00:02:31 [日志信息] Automatic session close at end of transaction: disabled
2011-06-22 00:02:31 [日志信息] JDBC batch size: 15
2011-06-22 00:02:31 [日志信息] JDBC batch updates for versioned data: disabled
2011-06-22 00:02:31 [日志信息] Scrollable result sets: enabled
2011-06-22 00:02:31 [日志信息] JDBC3 getGeneratedKeys(): enabled
2011-06-22 00:02:31 [日志信息] Connection release mode: auto
2011-06-22 00:02:31 [日志信息] Maximum outer join fetch depth: 2
2011-06-22 00:02:31 [日志信息] Default batch fetch size: 1
2011-06-22 00:02:31 [日志信息] Generate SQL with comments: disabled
2011-06-22 00:02:31 [日志信息] Order SQL updates by primary key: disabled
2011-06-22 00:02:31 [日志信息] Order SQL inserts for batching: disabled
2011-06-22 00:02:31 [日志信息] Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
2011-06-22 00:02:31 [日志信息] Using ASTQueryTranslatorFactory
2011-06-22 00:02:31 [日志信息] Query language substitutions: {}
2011-06-22 00:02:31 [日志信息] JPA-QL strict compliance: disabled
2011-06-22 00:02:31 [日志信息] Second-level cache: enabled
2011-06-22 00:02:31 [日志信息] Query cache: disabled
2011-06-22 00:02:31 [日志信息] Cache provider: org.hibernate.cache.NoCacheProvider
2011-06-22 00:02:31 [日志信息] Optimize cache for minimal puts: disabled
2011-06-22 00:02:31 [日志信息] Structured second-level cache entries: disabled
2011-06-22 00:02:31 [日志信息] Echoing all SQL to stdout
2011-06-22 00:02:31 [日志信息] Statistics: disabled
2011-06-22 00:02:31 [日志信息] Deleted entity synthetic identifier rollback: disabled
2011-06-22 00:02:31 [日志信息] Default entity-mode: pojo
2011-06-22 00:02:31 [日志信息] Named query checking : enabled
2011-06-22 00:02:31 [日志信息] building session factory
2011-06-22 00:02:31 [日志信息] Not binding factory to JNDI, no JNDI name configured
1
1
Hibernate: insert into t_mer2order (quantity, sumary, mer, order) values (?, ?, ?, ?)
2011-06-22 00:02:31 [日志信息] SQL Error: 1064, SQLState: 42000
2011-06-22 00:02:31 [日志信息] 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 'order) values (10, 0.0, 1, 1)' at line 1
org.hibernate.exception.SQLGrammarException: could not insert: [com.eportal.ORM.Mer2Order]
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:40)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2158)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2638)
at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:48)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:298)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:107)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)
at testMerchandise.TestORM$6.execute(TestORM.java:123)
at testMerchandise.Callback.sessionManagement(Callback.java:14)
at testMerchandise.TestORM.testMer2Order(TestORM.java:108)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: 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 'order) values (10, 0.0, 1, 1)' at line 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2822)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1536)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1626)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3031)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:943)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1184)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1101)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1086)
at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:73)
at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:33)
... 34 more
...全文
126 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
daniel55 2011-06-25
  • 打赏
  • 举报
回复
结贴了啊。。。。。
mayanyun1986 2011-06-25
  • 打赏
  • 举报
回复
那还不结贴啊
daniel55 2011-06-22
  • 打赏
  • 举报
回复
补充一下,我只把出问题的那个方法和相关的类发上来,下面是相关的POJO,调用方法,mapping,hibernate.cfg.xml


package com.eportal.ORM;

import java.util.Set;

public class Mer2Order {
//private Set<Merchandise> mer;
//private Set<Order> order;
private int mer;
private int order;
private int quantity;
private double sumary;
private int id;

public int getMer() {
return mer;
}
public void setMer(int mer) {
this.mer = mer;
}
public int getOrder() {
return order;
}
public void setOrder(int order) {
this.order = order;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
public double getSumary() {
return sumary;
}
public void setSumary(double sumary) {
this.sumary = sumary;
}


}




public void testMer2Order(){
Callback cb = new Callback();
cb.sessionManagement(new ICallback(){
public Session execute(Session session){

Mer2Order m2m = new Mer2Order();
Order order = (Order)session.load(Order.class, 1);
Merchandise mer = (Merchandise)session.load(Merchandise.class, 1);
int merID = mer.getId();
int orderID = order.getOrderId();
System.out.println(merID);
System.out.println(orderID);
m2m.setMer(merID);
m2m.setOrder(orderID);
m2m.setQuantity(10);
session.save(m2m);
return session;
}
});
}


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.eportal.ORM">
<class name="Mer2Order" table="t_mer2order">
<id name="id">
<column name="mer2order_id"/>
<generator class="native"/>
</id>
<property name="quantity"/>
<property name="sumary"/>
<property name="mer"/>
<property name="order"/>
</class>
</hibernate-mapping>


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!--加载驱动-->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!--连接的数据库名称-->
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/db_manager</property>

<!--用户名和密码-->
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">1234</property>

<!--加载的数据库方言 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.show_sql">true</property>


<!-- 设置表为自动更新 -->
<property name="hibernate.hbm2ddl_auto">update</property>

<mapping resource="com/eportal/ORM/mer2order.hbm.xml"/>



</session-factory>
</hibernate-configuration>
xinghen88 2011-06-22
  • 打赏
  • 举报
回复
呵呵!别客气共同进步吧
xinghen88 2011-06-22
  • 打赏
  • 举报
回复
另外你的hibernate映射文件中的配置好像不大对,没有指定关联对象,和对象类型啊!下面是我的一个映射文件楼主可以参考一下。
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="test.entity.CusCustomer" table="cus_customer" schema="dbo" catalog="eSale">
<id name="cusId" type="java.lang.Integer">
<column name="cus_id" />
<generator class="native" />
</id>
<property name="cusName" type="java.lang.String">
<column name="cus_name" not-null="true" />
</property>
<property name="cusPass" type="java.lang.String">
<column name="cus_pass" />
</property>
<property name="cusAddr" type="java.lang.String">
<column name="cus_addr" not-null="true" />
</property>
</class>
</hibernate-mapping>
hanfeng1010 2011-06-22
  • 打赏
  • 举报
回复
在你的session.save(m2m)加上事务处理,
xinghen88 2011-06-22
  • 打赏
  • 举报
回复
向数据库存入的实体类中属性和数据库中表字段不匹配。你把实体类中注释掉的两个属性的getter和setter方法也注释掉吧。
daniel55 2011-06-22
  • 打赏
  • 举报
回复
xinghen88谢谢你哈,不小心又发出去了。今天我重新处理了一下,和你说的差不多哈。

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧