我正在Grails编写一个多线程应用程序,其他线程需要访问GORM/Hibernate.当他们尝试访问GORM时,我收到错误"org.hibernate.HibernateException:没有Hibernate会话绑定到线程,配置不允许在这里创建非事务性的".
确定公平,有人可以指导我设置线程的最佳方式来访问吗?错误消息几乎听起来像你只需要更改一些配置选项但我感觉,它不是那么简单......
我有这样的代码:
Book.list().each {
// real code actually does something more useful
println "My id is " + it.id
}
Run Code Online (Sandbox Code Playgroud)
这让我觉得有点浪费,每本书的整个对象只是为了访问id而被加载.Grails中有一个load()方法,当你只想对ID进行操作时,我想知道这里是否有一个等价的加载所有域实例?我应该使用HQL吗?或者我应该保持原样?
PS:这让我想知道是否应该为大多数GORM方法(查找器等)提供一个选项,使其仅"加载"而不是"获取"目标类
我想在我的(Grails)项目中包含Apache commons-math 3.0.所以我把以下内容放在我的依赖项中:
compile "org.apache.commons:commons-math3:3.0"
Run Code Online (Sandbox Code Playgroud)
它位于中央maven存储库中,请参阅http://central.maven.org/maven2/org/apache/commons/commons-math3/3.0/
Gradle给了我错误
::::::::::::::::::::::::::::::::::::::::::::::
:: FAILED DOWNLOADS ::
:: ^ see resolution messages for details ^ ::
::::::::::::::::::::::::::::::::::::::::::::::
:: org.apache.commons#commons-math3;3.0!commons-math3.zip
::::::::::::::::::::::::::::::::::::::::::::::
Run Code Online (Sandbox Code Playgroud)
并包括:
==== mavenCentral: tried
http://repo1.maven.org/maven2/org/apache/commons/commons-math3/3.0/commons-math3-3.0.zip
Run Code Online (Sandbox Code Playgroud)
所以它看起来似乎在正确的位置,但为什么它寻找拉链而不是罐子?Gradle doco说jar是默认搜索的东西.我甚至尝试使用带有@符号的"仅工件符号"来获取jar(如http://gradle.org/docs/current/userguide/dependency_management.html中所述),但它仍然只搜索zip.
我正在将应用程序从 Spring Boot 1.x 迁移到 2.x,我在 logback 配置中发现了一些使用 a 的条目LevelRemappingAppender
,如下所示:
<appender name="DEBUG_LEVEL_REMAPPER" class="org.springframework.boot.logging.logback.LevelRemappingAppender">
<destinationLogger>org.springframework.boot</destinationLogger>
</appender>
Run Code Online (Sandbox Code Playgroud)
org.springframework.boot.logging.logback.LevelRemappingAppender
Boot 2 中不存在,我在迁移指南中找不到替代品或任何提及。
有没有一种简单的方法可以在 Spring Boot 2 中包含这个 Logback 重映射功能?
参考文档说大小约束:
使用Groovy范围来限制集合或数字的大小或String的长度.
当我对一个整数设置一个大小约束时,我收到一个警告
域类的属性[prop] TheClass的类型为[java.lang.Integer],不支持约束[size].验证期间不会检查此约束.
这个文件错了吗?
我知道我可以使用范围,但通常更容易指定数字中的数字位数而不是实际值(就像社会安全号码必须有7位数或其他任何数字,而不是1000000 - 9999999).
我在Grails中有两个非常相似的方法,比如"通过os计算统计数据"和"通过浏览器计算统计数据" - 有效地准备一些东西,然后在数据库上运行类似的查询,然后对结果做一些事情.方法不同的唯一部分是它们在我的方法中运行的查询 -
def summary = c.list {
eq('browser', Browser.get(1)) // OR eq('os', OS.get(1))
between('date', dates.start, dates.end)
}
Run Code Online (Sandbox Code Playgroud)
在我看来,重构它的理想方法是将闭包的第一行作为方法参数传递.喜欢
doStats (Closure query) {
...
def summary = c.list {
query
between('date', dates.start, dates.end)
}
}
Run Code Online (Sandbox Code Playgroud)
我试过这个,但"查询"被忽略了.我尝试使用query()但是然后在定义的地方执行查询子句,因此这也不起作用.我想我可以将整个闭包作为参数传递,但这似乎是错误的 - 查询可能在将来变得更复杂.
有没有更好的想法?
我正在使用Flex 4和Flash Builder 4.我只是想学习创建组件,我创建了一个mxml组件,如下所示,并将其包含在我的应用程序中:
<?xml version="1.0" encoding="utf-8"?>
<s:TextInput xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Script>
</fx:Script>
</s:TextInput>
Run Code Online (Sandbox Code Playgroud)
如果我取出fx:Script标签它可以工作,但只要我有这些标签(无论是否有任何实际代码)我得到错误:"Flex自定义组件不接受脚本:多个初始化器值为默认属性'text',类型为'String'."
那为什么会这样?组件中不允许使用脚本吗?
过去我可以在 Mac 上点击 CMD-9 来查看我的 git 变化。
现在 IntelliJ 现在有一个模态提交对话框,所以我在 CMD-9 出现的 git 窗口中看不到我的更改。是否有现有的键盘快捷键可以打开模式提交对话框,或者查看我的 git 更改?(我知道我可以在设置中恢复到旧的行为,但我不想要这样)。
Grails 2.0的一个优点是您可以在开发中更改域类,而无需重新启动应用程序服务器.这是有效的,但是当我更改域类时,我丢失了所有的引导数据,这基本上违背了目的.我正在使用默认的h2数据库.
解决这个问题的最佳方法是什么?我是否必须去像Postgres这样的外部数据库?
mx:DataGrid有一个名为"labelFunction"的属性.我正在将我的datagrid迁移到Spark,但它没有此属性.我该如何更换此功能?
grails ×6
grails-orm ×5
apache-flex ×2
grails-2.0 ×2
constraints ×1
flex4 ×1
flex4.5 ×1
git ×1
gradle ×1
groovy ×1
java ×1
logback ×1
spring ×1
spring-boot ×1
validation ×1