问题:错误500:内部服务器错误
URI: /listing/save
Class: org.hibernate.AssertionFailure
Message: getGeneratedKeys() support is not enabled
配置
可用控制器:
操作系统:Windows 7数据库:Oracle 11g R2 Enterprise Edition(11.2.0.4 64位)
调试输出包含:
Grails application running at http://localhost:8080
ERROR org.hibernate.AssertionFailure - HHH000099: an assertion failure occured (this may indicate a bug in Hibernate, but is more likely due to unsafe use of the session): org.hibernate.AssertionFailure: getGeneratedKeys() support is not enabled
ERROR org.grails.web.errors.GrailsExceptionResolver - AssertionFailure occurred when processing request: [POST] /listing/save - parameters:
name: Scott
phone: 555-1212
create: Create
getGeneratedKeys() support is not enabled. Stacktrace follows:
org.hibernate.AssertionFailure: getGeneratedKeys() support is not enabled
at phonebook.ListingController.$tt__save(ListingController.groovy:38) ~[main/:na]
at grails.transaction.GrailsTransactionTemplate$2.doInTransaction(GrailsTransactionTemplate.groovy:93) ~[grails-core-3.0.1.jar:3.0.1]
at grails.transaction.GrailsTransactionTemplate.execute(GrailsTransactionTemplate.groovy:90) ~[grails-core-3.0.1.jar:3.0.1]
at grails.transaction.GrailsTransactionTemplate$2.doInTransaction(GrailsTransactionTemplate.groovy:93) ~[grails-core-3.0.1.jar:3.0.1]
at grails.transaction.GrailsTransactionTemplate.execute(GrailsTransactionTemplate.groovy:90) ~[grails-core-3.0.1.jar:3.0.1]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[na:1.8.0_45]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ~[na:1.8.0_45]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_45]
File: grails-app\controllers\phonebook\ListingController
Line: 38
Content: listing.save flush:true
复制问题:
编辑:生成。格拉德尔
dependencies {
...
runtime "com.oracle:jdbc-lib-ojdbc6:11.2.0.4"
...
}
注意:Oracle客户端ojdbc6。jar在上面指定的坐标处添加到本地Maven存储库。
编辑:grails-app\conf\application.yml
...
dataSource:
pooled: true
jmxExport: true
driverClassName: oracle.jdbc.OracleDriver
username: scott
password: tiger
environments:
development:
dataSource:
dbCreate: update
url: jdbc:oracle:thin:@localhost:1521/sbx1
...
C: \开发人员\电话簿
package phonebook
class Listing {
String name
String phone
static constraints = {
name maxSize: 50
phone maxSize: 14
}
}
C:\Dev\phonebook> grails generate-all phonebook.listing
C:\Dev\phonebook> grails run-app
以下内容确认应用程序连接到数据库并成功创建表:
SQL> describe listing
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NOT NULL NUMBER(19)
VERSION NOT NULL NUMBER(19)
NAME NOT NULL VARCHAR2(50 CHAR)
PHONE NOT NULL VARCHAR2(14 CHAR)
模式中还创建了两个序列:
HIBERNATE_SEQUENCE
LISTING_SEQ
注意:这些必须是我多次尝试修改域类中的映射属性以生成ID时创建的。
嵌入式Tomcat服务器运行后的操作http://localhost:8080/Internet Explorer:http://localhost:8080/单击链接:可用控制器
研究和故障排除活动:
我试图通过grails app\conf\application中的以下部分来解决这个问题。yml:
hibernate:
jdbc:
use_get_generated_keys: true
cache:
queries: false
...
我怀疑解析涉及grails app\conf\application中的特定设置。但尚未发现配置设置的正确组合。
Oracle 12的这个问题通过添加
jdbc:
use_get_generated_keys: true
并将oracle jdbc驱动程序升级到ojdbc7 12.1.0.2(12.1.0.1不起作用)
您还可以尝试从标识序列生成器(我相信是Oracle方言的默认值)切换到seq hilo:
在Grails 2中。x、 您可以通过:
grails.gorm.default.mapping = {
id generator: 'seqhilo', params: [max_lo: 1000]
}
我假设它在3中也会起到类似的作用。应用程序中的x。yml文件。这应该可以防止hibernate甚至不需要使用getGeneratedKeys()方法,因为它会将id从自己的内存池绑定到插入中,而不是执行seq。insert语句中的nextval。
好的,当我查看application.yml配置文件中的位置以放置第一个答案中的建议时,我发现我使用的hibernate.jdbc.use_get_generated_keys=true设置实际上在grails块下。虽然以前从未使用yml文件,但我不知道缩进和块如何形成配置设置的潜在重要性。当我第一次对文件进行编辑时,我查看是否已经有一个Hibernate部分,我将此设置放在该块中,从而产生grails.hibernate.jdbc.use_get_generated_keys的设置。我在Hibernate的根(无缩进)下创建了设置并进行了测试。结果是成功完成了操作。
我希望这篇文章能帮助其他新用户使用这个配置文件,它在以groovy为中心的框架中似乎不合适。我将看看在创建新的grails应用程序时是否有一个选项来利用groovy配置文件而不是yml文件。
我试图在Spring Boot应用程序中启用CORS支持,但没有成功。我研究了很多解决方案,但似乎都不适合我。 当我尝试从Angular应用程序呼叫Java后端时,我在chrome中看到了错误: CORS策略阻止从源http://localhost:4200在http://localhost:8080/..处访问XMLHttpRequest:对预检请求的响应不通过权限改造检查:不允许对预检请求进行
我正在尝试使用NetBeans(或任何IDE)开发JavaFX应用程序,但我无法正确安装JDK和JavaFX。 对于上下文,我使用Ubuntu 18.04 LTS,并遵循本指南。目前,当运行时,我得到以下输出: 这不是我想要使用的JDK。我已经从这个网站下载了JDK15,打开了tar。gz文件,并将其放入名为的文件夹中的。提取文件夹后,我将JDK添加到我的系统路径变量中: 然后是系统重启。在Net
当我在Django项目中设置React时,我遇到了这个错误 模块生成失败(来自./node_modules/babel-loader/lib/index.js):语法错误:C:\users\1sun\cebula3\cebula_react\assets\js\index.js:当前未启用对实验语法“class properties”的支持(17:9): 所以,我安装了@babel/plugin-
我使用spring-boot-starter-data-solr,并希望利用Spring Data Solr的schmea cration支持,如文档中所述: 每当刷新应用程序上下文时,自动架构填充都会检查您的域类型,并根据属性配置将新字段填充到索引中。这要求 solr 在无架构模式下运行。 但是,我无法实现这一目标。据我所知,Spring启动器不会在@EnableSolrRepositories
问题内容: Visual Studio 2017中是否有一种方法可以自动为asp.net核心 Angular 项目启用Docker支持?创建新选项时,该选项被禁用。它仅适用于 Web应用程序(MVC) 。 创建项目后,我可以为角度项目启用Docker支持(项目->添加-> Docker支持),但是当我启动应用程序时,出现一个异常,提示node.js不可用。 发生System.AggregateEx