hibernate报错SQL 命令未正确结束

七号双子星 2017-04-19 01:21:17
初学hibernate,只有一张表,数据库用的Oracle11g,hibernate用的5.2.10;

实体类的配置文件如下,主键为自动增长,表中没有设置序列
<hibernate-mapping package="org.po">
<class name="Student" table="STUDENT">
<id name="stuId" type="int" >
<column name="STUID" precision="22" scale="0" />
<generator class="increment" />
</id>
<property name="stuName">
<column name="STUNAME" not-null="true"/>
</property>
<property name="stuSex" >
<column name="STUSEX" length="4"/>
</property>
<property name="stuAge">
<column name="STUAGE"/>
</property>
</class>

hibernate的主配置如下:
<hibernate-configuration>
<session-factory>
<!-- 数据库连接驱动包 -->
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<!--数据库连接密码 -->
<property name="hibernate.connection.password">java</property>
<!--数据库连接地址 -->
<property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
<!--连接用户 -->
<property name="hibernate.connection.username">OFSEVEN</property>
<!--默认目录 -->
<property name="hibernate.default_catalog">OFSEVEN</property>
<!--默认图标 -->
<property name="hibernate.default_schema">OFSEVEN</property>
<!-- 数据库方言 -->
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="hibernate.search.autoregister_listeners">false</property>
<!--
<property name="hibernate.validator.apply_to_ddl">false</property>
-->
<!--是否生成查询语句 -->
<property name="hibernate.show_sql">true</property>
<!--是否生成格式化语句 -->
<property name="hibernate.format_sql">true</property>
<!-- 连接实体类配置文件 -->
<mapping resource="org/po/Student.hbm.xml" />
</session-factory>
</hibernate-configuration>

然后每次保存数据时总是报错
public static void main(String[] args) {
try {
//获得一个数据库会话对象
Session session = HibernateSessionFactory.getSession();
//创建实体类
Student stu = new Student("小柴", "男", 2);
//开启事物
Transaction tx = session.beginTransaction();
session.save(stu);
tx.commit();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
HibernateSessionFactory.closeSession();
}
}

报错如下:
四月 19, 2017 1:06:46 上午 org.hibernate.envers.boot.internal.EnversServiceImpl configure
INFO: Envers integration enabled? : true
Hibernate:
select
max(STUID)
from
OFSEVEN.OFSEVEN.STUDENT
四月 19, 2017 1:06:47 上午 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 933, SQLState: 42000
四月 19, 2017 1:06:47 上午 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: ORA-00933: SQL 命令未正确结束

org.hibernate.exception.SQLGrammarException: could not extract ResultSet


求救!!!
...全文
247 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
七号双子星 2017-04-21
  • 打赏
  • 举报
回复
引用 1 楼 自由自在_Yu的回复:
select max(STUID) from OFSEVEN.OFSEVEN.STUDENT 多了一个OFSEVEN.
嗯,是的,我将hibernate.cfg.xml中的default_catalog配置和default_schema注释掉一个或者都注释掉之后就好了。看来应该是我配置的表的访问形式错了。 谢谢指点!!
七号双子星 2017-04-21
  • 打赏
  • 举报
回复
引用 2 楼 110成成的回复:
oracle中的表的主键如果想设置成自增长,那么需要创建序列。 CREATE SEQUENCE student_sequence INCREMENT BY 1 NOMAXVALUE NOCYCLE CACHE 10; <id name="stuId" column="STUID" type="java.lang.Integer"> <generator class="native"> <param name="sequence">student_sequence</param> </generator> </id>
我想让hibernate框架自动帮我完成移动增长,这个不是问题所在,我这是报错找不到实体类,不知道为什么?
自由自在_Yu 2017-04-19
  • 打赏
  • 举报
回复
select max(STUID) from OFSEVEN.OFSEVEN.STUDENT 多了一个OFSEVEN.
110成成 2017-04-19
  • 打赏
  • 举报
回复
oracle中的表的主键如果想设置成自增长,那么需要创建序列。 CREATE SEQUENCE student_sequence INCREMENT BY 1 NOMAXVALUE NOCYCLE CACHE 10; <id name="stuId" column="STUID" type="java.lang.Integer"> <generator class="native"> <param name="sequence">student_sequence</param> </generator> </id>

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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