`

java.sql.SQLSyntaxErrorException: ORA-02289: 序列不存在

阅读更多

org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save():

今天学的HIBERNATE,回去自己练习,可是却遇到了上面的问题。老办法,百度,很幸运,第一个链接我就得到了解决问题的方法。

-----------------------------------------------------------------------------------------

引起问题的原因:

就是那个由Hibernate根据数据库表自动生成的"类名.hbm.xml"映射文件引起的。

首先我的表(Info)由两个字段组成,即:

int id;//主建

String name;

(自己做测试,所以就简单的建了个表)

由Hibernate生成的Info.hbm.xml中是这样写的:

-----------------------------------------------------

<id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="assigned"/>
</id>

-----------------------------------------------------

<id>这个是必须有的。它是用来定义实体的标识属性(对应数据库表的主键)

而我这里由于id本身就是主键,所以column的属性便是id

下面是很关键的一点<generator>,由于一时兴趣,于是找了很多资料,关于它的解释是:用于指定主键的生成策略。它的值有多,下面是转来的:

--------------------------------------------------------------------------------

“assigned”
主键由外部程序负责生成,在   save()   之前指定一个。
  
“hilo”
通过hi/lo   算法实现的主键生成机制,需要额外的数据库表或字段提供高位值来源。
  
“seqhilo”
与hilo   类似,通过hi/lo   算法实现的主键生成机制,需要数据库中的   Sequence,适用于支持   Sequence   的数据库,如Oracle。
  
“increment”
主键按数值顺序递增。此方式的实现机制为在当前应用实例中维持一个变量,以保存着当前的最大值,之后每次需要生成主键的时候将此值加1作为主键。这种方式可能产生的问题是:不能在集群下使用。
  
“identity”
采用数据库提供的主键生成机制。如DB2、SQL   Server、MySQL   中的主键生成机制。
  
“sequence”
采用数据库提供的   sequence   机制生成主键。如   Oralce   中的Sequence。
  
“native”
由   Hibernate   根据使用的数据库自行判断采用   identity、hilo、sequence   其中一种作为主键生成方式。
  
“uuid.hex”
由   Hibernate   基于128   位   UUID   算法   生成16   进制数值(编码后以长度32   的字符串表示)作为主键。
  
“uuid.string”
与uuid.hex   类似,只是生成的主键未进行编码(长度16),不能应用在   PostgreSQL   数据库中。
     
“foreign”
使用另外一个相关联的对象的标识符作为主键。

--------------------------------------------------------------------------------

看了上面的介绍,再看看代码,原来是<Generator>属性设置有问题。

然后改为"identity"、"native"问题便解决。

分享到:
评论

相关推荐

    java.sql.SQLSyntaxErrorException:

    java.sql.SQLSyntaxErrorException: The size of BLOB/TEXT data inserted in one transaction is greater than 10% of redo log size….. 解决方式: 从报错信息看是因为innodb_log_file_size太小,至于原因,在 ...

    数据库疑难杂症 java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual tha

    数据库疑难杂症 java.sql.SQLSyntaxErrorException: 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’ at line...

    java.sql.SQLSyntaxErrorException Unknown column 'name' in 'field list'.md

    java.sql.SQLSyntaxErrorException: Unknown column 'name' in 'field list'看上去好像是name这个列是未知的,搞得我一度怀疑我是不是哪个语句写错了,然后修修改改了很久,也在网上找了资料,但是并没有解决我的...

    各服务器部署war

    1. **Java Web 应用**:Java Web应用是由Servlet、JSP(JavaServer Pages)、JavaBeans等组件构成的应用程序,它们在Java EE(Enterprise Edition)平台上运行。这些组件处理HTTP请求并返回响应。 2. **WAR 文件**...

    java.sql.SQLSyntaxErrorException(解决方案).md

    常见的问题

    mysql “ Every derived table must have its own alias”出现错误解决办法

    在MySQL数据库操作中,"Every derived table must have its own alias"是一个常见的错误提示,它意味着在你的SQL查询语句中,所有的子查询结果(也称为派生表)都需要被赋予一个唯一的别名。这个错误通常发生在多表...

    2020-04-26-log.txt

    从日志中可以看到,异常的具体信息是通过`java.sql.SQLSyntaxErrorException`抛出的,并且包含了错误代码ORA-00933。 #### 抛出异常的位置 从堆栈跟踪可以看出,异常是在尝试执行一个预编译的SQL查询时发生的。...

    MySQL中Multiple primary key defined报错的解决办法

    一个表只能有一个主键,并且主键的值必须是唯一的,不允许为空。当尝试为表定义多个主键或者主键设置不当时,系统可能会抛出“Multiple primary key defined”的错误。本文将详细探讨这个问题及其解决方案。 首先,...

    mybatis 报空值异常

    java.sql.SQLSyntaxErrorException: ORA-00911: 无效字符 ``` 这通常是因为 SQL 语句中存在非法字符,如多余的分号(`;`)。例如: ```xml select * from (select id, name, nvl(pid, '无') pid from t_resource...

    clickhouse-jdbc(从0.2.4到0.3.2版本).zip

    Clickhouse-JDBC是连接Java应用程序与Clickhouse数据库的桥梁,它允许通过标准的Java Database Connectivity (JDBC) API来执行SQL查询和管理数据。这个压缩包包含从0.2.4版本到0.3.2版本的所有Clickhouse-JDBC驱动,...

    Java中Error与Exception的区别.doc

    java.sql.SQLSyntaxErrorException java.lang.RuntimeException java.lang.NullPointerException java.lang.ArrayIndexOutOfBoundsException ``` 通过这个图可以清晰地看到 `Error` 和 `Exception` 在继承体系...

    Mysql 报Row size too large 65535 的原因及解决方法

    大意是数据表中有一个设定长度为64K的字段索引,当表中字段(不知道是字段名字还是什么)不能超过这个长度,65,535所说明的是针对的是整个表的非大字段类型的字段的bytes总合。(网上查到的) 我自己的理解(也不是...

    MySQL使用中遇到的问题记录

    本文主要关注的是几个常见的问题及其解决方案,包括因`sql_mode=only_full_group_by`导致的GROUP BY查询错误、清空表数据的方法,以及如何处理MySQL占用过多内存的情况。 首先,`sql_mode=only_full_group_by`是...

    Mycat路由新解析器选型分析与结果2

    import java.sql.SQLSyntaxErrorException; import net.sf.jsqlparser.JSQLParserException; import net.sf.jsqlparser.parser.CCJSqlParserUtil; import net.sf.jsqlparser.statement.Statements; import org....

    解决MySQL 5.7.9版本sql_mode=only_full_group_by问题

    在MySQL 5.7.9版本中,引入了一个新的默认SQL模式`ONLY_FULL_GROUP_BY`,这个模式旨在增强SQL查询的严谨性,防止在GROUP BY语句中出现未聚合的列,以避免不确定的结果。然而,这也导致了某些在旧版本中能够正常运行...

    java_jdbc  

    Java JDBC(Java Database Connectivity)是Java编程语言中用于与数据库交互的一组接口和类,它提供了标准的API,使得开发者可以使用Java编写数据库应用程序。在Java应用中,JDBC是连接到各种数据库的重要桥梁,无论...

    关于MySQL中savepoint语句使用时所出现的错误

    前几天帮同事解决一个案例,在主从复制环境下,从库上的MySQL版本号是5.5.5,... Last_Error: Error 'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for t

    Mycat路由新解析器选型分析与结果.docx

    然而,fdb parser存在一些限制,例如高源码修改门槛、缺乏友好的API接口、对复杂SQL语句的支持不足以及解析性能低下等问题。 面对这些问题,开发者开始寻找替代的解析器方案。在Java开源社区中,有两个值得注意的...

Global site tag (gtag.js) - Google Analytics