假设我已经使用GORM定义了一个User对象.每个用户可以拥有零个或多个Login:s.每个登录都有一个时间戳.检索user.logins时,我希望根据login.date的值对登录进行排序.什么是正确的Grails方法来实现这一目标?
示例:我希望以下代码按升序列出所有用户的登录名.
<g:each var="login" in="${user.logins}">
<tr>
<td>${login.date}</td>
</tr>
</g:each>
Run Code Online (Sandbox Code Playgroud)
这些是引用的类:
class User {
...
def hasMany = [logins: Login]
static fetchMode = [logins: "eager"]
}
class Login {
Date date
...
def belongsTo = [User]
}
Run Code Online (Sandbox Code Playgroud)
我正在运行Grails 1.0.4,这是最新的稳定版本.
我正在Grails编写一个多线程应用程序,其他线程需要访问GORM/Hibernate.当他们尝试访问GORM时,我收到错误"org.hibernate.HibernateException:没有Hibernate会话绑定到线程,配置不允许在这里创建非事务性的".
确定公平,有人可以指导我设置线程的最佳方式来访问吗?错误消息几乎听起来像你只需要更改一些配置选项但我感觉,它不是那么简单......
说我有类似的东西:
class Foo {
static mapping = {
table 'foo_table'
}
}
Run Code Online (Sandbox Code Playgroud)
foo_table如果我有对此对象的实例的引用,我怎么能得到名称?
有人可以解释如何在Grails中定义多列索引吗?文档最多是稀疏的.
例如,这似乎根本不起作用:http: //grails.org/GORM+Index+definitions
我对此有一些好运,但结果似乎是随机的.在一个域类中起作用的定义在应用于另一个域时不会(当然具有不同的名称). http://www.grails.org/doc/1.1/guide/single.html#5.5.2.6%20Database%20Indices
一些工作示例和解释将受到高度赞赏!
在Grails中,有没有办法限制枚举枚举的列的大小.在以下示例中,我希望列类型为char(2)
enum FooStatus {
BAR('br'), TAR('tr')
final static String id
}
class Foo {
FooStatus status
static constraints = {
status(inList:FooStatus.values()*.id,size:2..2)
}
}
Run Code Online (Sandbox Code Playgroud)
在导出模式时,inList和size都没有任何效果,列类型保持其默认值(varch(255))如果我定义一个新的UserType,也许我可以这样做.任何的想法 ?
谢谢你
我正在研究Grails,并撰写关于未来的内容.
RoadMap(http://grails.org/Roadmap)跳出了一些有趣的东西
GORM for REST
任何对Grails有更多经验的人都知道这会带来什么?
我猜测通过Web服务进行某种CRUD操作而不是使用Hibernate连接到SQL数据库?
也许是一个愚蠢的问题,但我应该在哪里/如何定义GORM域类属性的默认值?例如,当我创建一个新的Company对象实例时,我希望属性country的默认值为"USA".我想我可以在创建控制器中做到但它看起来有点脏.就像是:
def create = {
def companyInstance = new Company()
companyInstance.properties = params
companyInstance.accepted = "USA"
...
我在Grails应用程序中进行了集成测试,当我尝试保存类型的实体时失败 Member
invitingMember.save(flush: true)
Run Code Online (Sandbox Code Playgroud)
这引发了以下异常
org.hibernate.AssertionFailure:在com.mycompany.member.MemberConnectionService.addOrUpdateContact(MemberConnectionService.groovy:939)中,flush()未处理集合[com.mycompany.facet.Facet.channels].
在事务的早期,我将一个对象添加到集合属性中invitingMember.我的猜测是异常在上面的行中抛出,因为只有在这一点上才会保留添加到集合中的对象.
我正在尝试hasMany使用mapping语句设置我的属性的默认排序.我正在关注grails doc,但它对我不起作用(grails 1.3.5).我的代码看起来像:
class Note {
Calendar sendDate
static belongsTo = Message
}
class Message {
static hasMany = [notes: Note]
static mapping = {
notes sort:'sendDate desc'
}
}
Run Code Online (Sandbox Code Playgroud)
错误消息如下所示:
...
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'notes0_.sendDate' in 'order clause'
at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
at com.mysql.jdbc.Util.getInstance(Util.java:384)
...
Run Code Online (Sandbox Code Playgroud)
你看到我的代码中有任何错误吗?
我知道已经有一个问题,但我认为导致的问题可能因他们所说的而有所不同.我有以下设置:
这个grails应用程序有多个数据源(我不确定这个事实是否与它有任何关系)并且它发生在从第二个数据源调用Domain对象之后,该数据源已经使用grails反向工程插件进行了反向设计(已完成)在一个单独的项目上,然后导入到我的项目.
这是导致Controller层和服务层出现问题的GORM调用
def campusAttributes = CampusAttribute.findAllByNameLike("%Next Option%")
Run Code Online (Sandbox Code Playgroud)
我发现了一些其他的抱怨,这似乎是Maven和grails hibernate插件版本的一个问题,但在那种情况下,问题是grails 2.3.1和特定的hibernate插件版本非常特别.
我所做的只是一个grails run-app(没有用maven构建应用程序也没有任何嘲弄)
提前致谢
grails-orm ×10
grails ×9
database ×1
dns ×1
grails-2.0 ×1
groovy ×1
gsp ×1
hibernate ×1
indexing ×1
java ×1