问题标签 [grails-domain-class]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
148 浏览

java - 如何映射主键是 VARCHAR2 类型并执行我的方法来生成它

我是grails新手。我想用VARCHAR2映射主键并使用我的方法生成主键来生成它。如何解决这个问题?

0 投票
2 回答
7753 浏览

groovy - 如何更改 Grails 中的列名约定?

现在我将字段“String firstName”转换为“first_name”,并且我希望“firstname”作为 Hibernate 中的默认值。有可能吗?

0 投票
2 回答
1326 浏览

grails - 自动保存失败的自定义插入和更新方法

我正在将 Grails 应用程序从 Oracle 移植到 MySQL 数据库。最初的 Oracle 版本是一个遗留数据库,它使用一些复杂的视图来利用 MySQL 所没有的 Oracle 的 INSTEAD OF INSERT OR UPDATE 特性。作为一种解决方法,我在指向这些视图的域类上实现了插入和更新方法。例如,

以下是我目前遇到的问题的描述:

  1. 在服务方法中,我使用 AdminUser.get 加载 AdminUser 的实例
  2. 我修改加载的实例并调用update(),一切正常
  3. 一旦服务方法完成执行,由于在实例上调用 save 的东西而引发异常。

如何防止在步骤 (3) 中发生神奇的保存(我最近在某处读到 Grails 会自动保存已修改的 Domain 类实例,该实例在退出服务方法时尚未保存,但我似乎找不到现在链接到该资源)?

0 投票
1 回答
762 浏览

grails - Grails 1.3.5:在会话被销毁时更新用户表

我有 HttpSessionListener 来监听会话的创建和销毁时间。我有一个用户域,它已登录布尔列,每当用户登录或注销时我都会更新它,用于管理管理。我还将会话 ID 存储在数据库中。

我还想在会话被销毁时更新loggedIn列。下面是用 sessionDestroyed 方法编写的代码。

问题是用户表永远不会更新。

以下是日志文件中报告的错误:

我能知道在会话被破坏时如何正确更新用户表吗?

谢谢你。杰伊·钱德兰。

0 投票
2 回答
720 浏览

grails - 通过 GrailsDomainClassProperty 区分 Grails 域类字段和 getBlah() 方法

我正在编写一个 Groovy 脚本(作为 Grails 插件的一部分),并且我想获取我的插件用户可能定义的 GrailsDomainClass 的属性列表。我可以使用domainClass.properties(其中 domainClass 是GrailsDomainClass)来做到这一点。

但是,假设用户拥有 grails 域类:

在这种情况下,domainClass.properties返回一个同时包含name和的列表someNoneExistingProperty

我知道这是因为 Grails 正在动态生成一个只读属性,以供有人使用 getBlah() 方法的地方使用。太好了,但是在我的脚本中,我只想使用“真实”属性(或至少非只读属性)执行一些操作。

也就是说,我想要一些区分或识别的方式someNonExistingProperty为只读属性,或者,作为由 Grails 生成的属性,而不是由我的插件用户明确输入为 domainClass 中的字段。

我查看了GrailsDomainClassProperty类,它有一系列方法提供有关属性的信息。但是,它们似乎都没有告诉我属性是否为只读,或者让我区分 domainClass 中定义的字段和 Grails 由于“getSomeNonExistingProperty”而即时创建的字段()“ 方法。

我在这里遗漏了一些明显的东西吗?有没有办法只获得明确的用户定义字段的列表(例如,在上面的例子中,名称)?

0 投票
1 回答
606 浏览

java - 关于多域关联的 Grails 验证问题?

我需要验证 3 个域之间的保存操作,这是关系:

用户 - JobProcess:一对多,JobProcess - Heatmap:一对多。

我正在使用异常来控制验证流程,这是我的验证类:

我还构建了一个服务类来抽象热图操作(并将参数数据绑定到对象):

我的控制器:

我的第一个问题:我没有使用错误验证:user.save() - 为什么不执行验证?
我可以通过以下方式解决此问题购买更新 if (user.save()):if (heatmap.validate() && user.save())。
有更好的方法吗?

我的第二个问题:我的重定向没有触发无效发布异常。
我被重定向到我的创建视图,但我的所有字段都是空白的(我丢失了所有字段信息)并且没有验证错误。
不过,我使用的是模型:[heatmap:che.invalidObject]。
除了例外,我传回了无效对象,所以我的创建视图应该显示确切的验证错误?怎么了 ?

谢谢

0 投票
1 回答
2434 浏览

hibernate - Grails:域类映射(hibernate用户类型的集合)

我想知道是否可以实现以下域模型。

让我们有一个包含一组间隔(joda time)的域类。我可以使用 org.joda.time.contrib.hibernate.PersistentInterval hibernate 用户类型将 Interval 映射到数据库表(通过与http://www.grails.org/JodaTime+Plugin类似的方式)。但是,如果我有一组间隔,而不仅仅是一个间隔,我无法弄清楚如何实现映射。

例子:

}

上面的实现失败并出现以下错误:

2010-10-23 18:30:25,483 [main] ERROR context.GrailsContextLoader - 执行引导程序时出错:创建名为“messageSource”的 bean 时出错:bean 初始化失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“transactionManager”的 bean 时出错:设置 bean 属性“sessionFactory”时无法解析对 bean“sessionFactory”的引用;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“sessionFactory”的 bean 时出错:调用 init 方法失败;嵌套异常是 org.hibernate.MappingException:外键 (FK4FDC5B1E5107CA0:activity_intervals [start,end])) 必须与引用的主键 (activity [id]) org.springframework 具有相同的列数。beans.factory.BeanCreationException:创建名为“messageSource”的bean时出错:bean初始化失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“transactionManager”的 bean 时出错:设置 bean 属性“sessionFactory”时无法解析对 bean“sessionFactory”的引用;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“sessionFactory”的 bean 时出错:调用 init 方法失败;嵌套异常是 org.hibernate.MappingException: Foreign key (FK4FDC5B1E5107CA0:activity_intervals [start,end])) 必须与 org.grails.tomcat.TomcatServer.start( TomcatServer.groovy:212) BeanCreationException:创建名为“messageSource”的 bean 时出错:bean 初始化失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“transactionManager”的 bean 时出错:设置 bean 属性“sessionFactory”时无法解析对 bean“sessionFactory”的引用;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“sessionFactory”的 bean 时出错:调用 init 方法失败;嵌套异常是 org.hibernate.MappingException: Foreign key (FK4FDC5B1E5107CA0:activity_intervals [start,end])) 必须与 org.grails.tomcat.TomcatServer.start( TomcatServer.groovy:212) BeanCreationException:创建名为“messageSource”的 bean 时出错:bean 初始化失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“transactionManager”的 bean 时出错:设置 bean 属性“sessionFactory”时无法解析对 bean“sessionFactory”的引用;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“sessionFactory”的 bean 时出错:调用 init 方法失败;嵌套异常是 org.hibernate.MappingException: Foreign key (FK4FDC5B1E5107CA0:activity_intervals [start,end])) 必须与 org.grails.tomcat.TomcatServer.start( TomcatServer.groovy:212) 创建名为“messageSource”的 bean 时出错:bean 初始化失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“transactionManager”的 bean 时出错:设置 bean 属性“sessionFactory”时无法解析对 bean“sessionFactory”的引用;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“sessionFactory”的 bean 时出错:调用 init 方法失败;嵌套异常是 org.hibernate.MappingException: Foreign key (FK4FDC5B1E5107CA0:activity_intervals [start,end])) 必须与 org.grails.tomcat.TomcatServer.start( TomcatServer.groovy:212) 创建名为“messageSource”的 bean 时出错:bean 初始化失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“transactionManager”的 bean 时出错:设置 bean 属性“sessionFactory”时无法解析对 bean“sessionFactory”的引用;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“sessionFactory”的 bean 时出错:调用 init 方法失败;嵌套异常是 org.hibernate.MappingException: Foreign key (FK4FDC5B1E5107CA0:activity_intervals [start,end])) 必须与 org.grails.tomcat.TomcatServer.start( TomcatServer.groovy:212) bean初始化失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“transactionManager”的 bean 时出错:设置 bean 属性“sessionFactory”时无法解析对 bean“sessionFactory”的引用;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“sessionFactory”的 bean 时出错:调用 init 方法失败;嵌套异常是 org.hibernate.MappingException: Foreign key (FK4FDC5B1E5107CA0:activity_intervals [start,end])) 必须与 org.grails.tomcat.TomcatServer.start( TomcatServer.groovy:212) bean初始化失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“transactionManager”的 bean 时出错:设置 bean 属性“sessionFactory”时无法解析对 bean“sessionFactory”的引用;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“sessionFactory”的 bean 时出错:调用 init 方法失败;嵌套异常是 org.hibernate.MappingException: Foreign key (FK4FDC5B1E5107CA0:activity_intervals [start,end])) 必须与 org.grails.tomcat.TomcatServer.start( TomcatServer.groovy:212) BeanCreationException:创建名为“transactionManager”的bean时出错:设置bean属性“sessionFactory”时无法解析对bean“sessionFactory”的引用;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“sessionFactory”的 bean 时出错:调用 init 方法失败;嵌套异常是 org.hibernate.MappingException: Foreign key (FK4FDC5B1E5107CA0:activity_intervals [start,end])) 必须与 org.grails.tomcat.TomcatServer.start( TomcatServer.groovy:212) BeanCreationException:创建名为“transactionManager”的bean时出错:设置bean属性“sessionFactory”时无法解析对bean“sessionFactory”的引用;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“sessionFactory”的 bean 时出错:调用 init 方法失败;嵌套异常是 org.hibernate.MappingException: Foreign key (FK4FDC5B1E5107CA0:activity_intervals [start,end])) 必须与 org.grails.tomcat.TomcatServer.start( TomcatServer.groovy:212) 嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“sessionFactory”的 bean 时出错:调用 init 方法失败;嵌套异常是 org.hibernate.MappingException: Foreign key (FK4FDC5B1E5107CA0:activity_intervals [start,end])) 必须与 org.grails.tomcat.TomcatServer.start( TomcatServer.groovy:212) 嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“sessionFactory”的 bean 时出错:调用 init 方法失败;嵌套异常是 org.hibernate.MappingException: Foreign key (FK4FDC5B1E5107CA0:activity_intervals [start,end])) 必须与 org.grails.tomcat.TomcatServer.start( TomcatServer.groovy:212)

我认为解决此问题的方法是提取 Interval 以分离扩展 Interval 的域类并在其中指定映射。但是,Interval 是最终类,因此无法扩展。

感谢您的建议。

0 投票
1 回答
4333 浏览

grails - 如何伪造验证错误?

我正在使用Grails Webflow插件。以下是我正在使用的域对象:

在 webflow 中,我需要确保 fooObject.fooProp1 不为空。如果是,我想抛出一个错误并强制用户为其提供一个值。我尝试使用 validate() 来执行此操作(在 Bar 和 Foo 对象上),但是由于 fooProp1 具有 nullable:true 属性,因此它通过了验证。有任何想法吗?

0 投票
1 回答
5986 浏览

grails - 日期验证的 Grails 最小约束

我是 grails 和 groovy 的新手。我有一个带有开始和结束日期的项目域类。我想设置一个约束,指定结束日期需要大于开始日期(然后项目的另一个子对象需要使用父项目的日期验证其开始日期和结束日期)。这是否可能与最小约束或我必须把它放在别处?唯一约束确实允许以这种方式链接两个属性,希望最小/最大约束允许这样做。我试过了

它抛出一个错误,说属性 startDate 在 Project 上不可用

0 投票
2 回答
713 浏览

grails-plugin - Grails 货币插件:无法解析类 Money

我安装了 grails 货币插件。我想在我的 grails 域类中使用 Money 类型:

当我编译说“无法解析类 Money”时出现错误。我追踪了 Grails Money Plugin 的 package heirchy 并尝试输入:

---- 那也没用。

1) 当我生成 Foo 时,grails 将域类放在“projectName.Foo”下,就像它对创建的每个域类一样。2) 我正在使用 Grails 1.3.5。

您对 Currencies 类的位置有任何想法,以便我可以将它包含在“import <....Money> 并摆脱这个编译错误吗?