- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 Micronaut Groovy GROM 我能够从 MySQL 数据库读取数据。但是当我尝试删除记录时,它会抛出 org.hibernate.HibernateException: No Session found for current thread
错误消息。
curl -s http://localhost:8880/book/1
{"bookid":"1","name":"Java","id":1}
curl -s http://localhost:8880/book/delete/1
{"message":"Internal Server Error: Could not obtain current Hibernate Session; nested exception is org.hibernate.HibernateException: No Session found for current thread"}
这是我的 Controller 代码:
package webapp
import io.micronaut.http.annotation.Controller
import io.micronaut.http.annotation.Body
import io.micronaut.http.annotation.Get
import io.micronaut.http.annotation.Post
import io.micronaut.http.annotation.Delete
import io.micronaut.http.HttpStatus
import io.micronaut.http.HttpResponse
import groovy.transform.CompileStatic
import groovy.util.logging.Slf4j
import io.micronaut.spring.tx.annotation.Transactional;
@Slf4j
//@CompileStatic
@Controller("/book")
class BookController implements BooksApi {
final BookService bookService
BookController(BookService bookService) {
this.bookService = bookService
}
@Get("/list")
List<Book> listBooks() {
return bookService.findAll()
}
@Get("/count")
int Count(){
return bookService.count()
}
@Override
@Get("/{id}")
Book show(Long id) {
return bookService.find(id)
}
@Delete("/{id}")
Book delete(Long id) {
Book b= bookService.find(id)
if(b){
// b.delete(flush: true)
b.delete()
}
return b
}
@Post("/save")
def save(@Body Object JSON) {
String bookid=JSON?.bookid
String name=JSON?.name
def b =bookService.save(bookid,name)
return HttpResponse.created(b)
}
@Get("/")
String index() {
return "Hello World"
}
}
我可以知道我在这里做错了什么吗?
谢谢
更新了代码 1图书服务
package webapp
import grails.gorm.services.Service
import javax.validation.constraints.NotBlank
import javax.validation.constraints.NotNull
import grails.gorm.transactions.Transactional;
@Service(Book)
interface BookService {
int count()
Book save(@NotBlank String bookid,@NotBlank String name)
List<Book> findAll()
Book find(@NotNull Long id)
@Transactional
Book delete(@NotNull Long id)
void deleteById(Long id)
}
最佳答案
在杰夫·布朗的帮助下,我让它发挥作用。这是工作代码。
服务:
package webapp
import grails.gorm.services.Service
import javax.validation.constraints.NotBlank
import javax.validation.constraints.NotNull
@Service(Book)
interface BookService {
int count()
Book save(@NotBlank String bookid, @NotBlank String name)
List<Book> findAll()
Book find(@NotNull Long id)
Book delete(@NotNull Long id)
}
Controller
package webapp
import groovy.util.logging.Slf4j
import io.micronaut.http.HttpResponse
import io.micronaut.http.annotation.*
@Slf4j
//@CompileStatic
@Controller("/book")
class BookController implements BooksApi {
final BookService bookService
BookController(BookService bookService) {
this.bookService = bookService
}
@Get("/list")
List<Book> listBooks() {
return bookService.findAll()
}
@Get("/count")
int Count() {
return bookService.count()
}
@Override
@Get("/{id}")
Book show(Long id) {
return bookService.find(id)
}
@Delete("/{id}")
Book delete(Long id) {
return bookService.delete(id)
}
@Post("/save")
def save(@Body Object JSON) {
String bookid = JSON?.bookid
String name = JSON?.name
def b = bookService.save(bookid, name)
return HttpResponse.created(b)
}
@Get("/")
String index() {
return "Book Service"
}
}
build.gradle
plugins {
id "io.spring.dependency-management" version "1.0.6.RELEASE"
id "com.github.johnrengelman.shadow" version "4.0.2"
}
apply plugin:"application"
apply plugin:"groovy"
version "0.1"
group "webapp"
repositories {
mavenLocal()
mavenCentral()
maven { url "https://jcenter.bintray.com" }
}
dependencyManagement {
imports {
mavenBom 'io.micronaut:micronaut-bom:1.0.2'
}
}
ext {
gormVersion = '6.1.9.RELEASE'
h2Version = '1.4.196'
tomcatJdbcVersion = '8.5.28'
springSecurityCryptoVersion='4.2.5.RELEASE'
}
dependencies {
compile "io.micronaut.configuration:micronaut-jdbc-tomcat"
compile "io.micronaut.configuration:micronaut-hibernate-validator"
compile "io.micronaut.configuration:micronaut-hibernate-gorm"
compile "org.grails:grails-datastore-gorm-hibernate5:$gormVersion"
compile "io.micronaut:micronaut-http-client"
compile "io.micronaut:micronaut-http-server-netty"
compile "io.micronaut:micronaut-runtime-groovy"
compile "io.micronaut:micronaut-validation"
compile "javax.annotation:javax.annotation-api"
compileOnly "io.micronaut:micronaut-inject-groovy"
runtime "ch.qos.logback:logback-classic:1.2.3"
runtime "com.h2database:h2"
runtime "org.apache.tomcat:tomcat-jdbc"
testCompile "io.micronaut:micronaut-inject-groovy"
testCompile("org.spockframework:spock-core") {
exclude group: "org.codehaus.groovy", module: "groovy-all"
}
runtime "org.hibernate:hibernate-ehcache:5.1.9.Final"
runtime group: 'mysql', name: 'mysql-connector-java', version: '8.0.13'
}
shadowJar {
mergeServiceFiles()
}
run.jvmArgs('-noverify', '-XX:TieredStopAtLevel=1')
mainClassName = "webapp.Application"
tasks.withType(GroovyCompile) {
groovyOptions.forkOptions.jvmArgs.add('-Dgroovy.parameters=true')
}
application.yaml 文件
---
micronaut:
application:
name: webapp
server:
port: 8880
---
datasources.default: {}
---
hibernate:
hbm2ddl:
auto: update
cache:
queries: false
use_second_level_cache: true
use_query_cache: false
region.factory_class: org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory
dataSource:
url: jdbc:mysql://localhost:3306/db
dbCreate: create-update
pooled: true
jmxExport: true
driverClassName: com.mysql.jdbc.Driver
dialect: org.hibernate.dialect.MySQL5InnoDBDialect
username:
password:
希望这对其他人有帮助。
谢谢
关于java - Micronaut MySQL删除记录org.hibernate.HibernateException : No Session found for current thread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53963146/
我有一个 jQuery 日期选择器。我想将默认日期设置为“当前月份、当前日期(当前年份-18)”,但在设置 defaultDate 属性时遇到问题。显示的默认年份是 1920 年,据说是 1995 年
我有下面的 C 程序来实现升序链表。问题出在 buildList() 函数中,因此您可以忽略除 main() 和 buildList() 之外的其他函数。 #include #include stru
嗯,想象一下 current.txt 文件: asdf base.txt 文件: asdf 其他.txt文件: asdf 当我进行三向 merge 时 git merge-file current.t
我试图在鼠标悬停时生成一个 :after 伪元素。例如: .email{ width:100px; overflow:hidden; text-overflow:ellipsi
为什么 $('a.current').removeClass('current'); 不适用于此 jquery 选项卡? http://jsfiddle.net/laukstein/ytnw9/8/
我正在创建一个应用程序(Outlook 的 Office 加载项) 我遇到的问题是更新我的屏幕。我知道我需要调用 Dispatcher,但是它在我的 ViewModel 中始终为 null p
我为客户开发网络和移动应用程序。在我当前的架构中,许多资源在 Web 访问和移动访问之间共享。 aspx 页面可以显示在网络上,也可以在移动应用程序中调用 WebView 。我的问题是: WebOpe
我通过调用 IEnumerable.GetEnumerator() 得到了一个枚举器,然后我称它为MoveNext()直到它返回false,然后访问它的Current属性(property)。令我惊讶
我正在尝试动态查找当前运行的函数(此函数)的名称,即 (defun my-func () (remove-hook 'some-hook this-function) (do-
阅读了短语 "The current SynchronizationContext is a property of the current thread" correct" ,我有点懵了…… 在 V
集成 IOS STRIPE TERMINAL SDK对于BBPOS Chipper 2X BT使用 swift 。我们已经开发并测试了该系统,并且运行良好。但是当我们将它交给其他国家的客户时,他们收到
当我在训练期间编写的类上实现 IEnumerable 和 IEnumerator 时,我注意到我需要为属性“Current”指定两个实现。 public class PeopleEnumerator
我原以为对实现了 IEnumerable 的空集合执行以下代码会抛出异常: var enumerator = collection.GetEnumerator(); enumerator.MoveNe
应Application.Current.Shutdown()不用作关闭 WPF 应用程序的最佳实践? 我有一个小的多窗口应用程序,“关机”似乎对我所有的退出命令都很好。但是,我被告知要始终使用 Ap
在 XPath 1.0 中,有一个函数 current() 可以派上用场,当我根据我当时所在的节点引用 XML 中其他地方的节点时。我的 XML 具有如下结构:
在 MVC 中,这两者有什么区别? 它们看起来相同,甚至返回相同的类型/类System.Web.Security.RolePrincipal,但有一些微妙之处。 例如。当针对通过 ClaimsPrin
这个问题在这里已经有了答案: What is the difference between an App and Application in c#.net? (1 个回答) 关闭 7 年前。 这两
我正在为我的团队开发一个代码生成器 (VSIX),在我与 VSIX 可扩展性框架作斗争之后,我打算使用 Roslyn 作为基础引擎。 我的代码生成器目前能够为解决方案生成一个新的 csproj,并且能
为什么 $('a.current').parent('li').addClass('current'); 和 $(this).hasClass('current')。 parent('li').add
当我使用 Xcode 调试我的 iOS 程序时,gdb 将其显示在控制台 View 上,并且没有发生任何错误。 我只想知道输出“Current language: auto; currently ob
我是一名优秀的程序员,十分优秀!