用Grails弄湿我的脚,所以请忍受我...
只是想知道这是否是 transient 的良好使用,还是有更好的方法。
说我有
class Author {
String name
String favoriteBook
static transients = ["favoriteBook"]
etc.
“最喜欢的书”是作者出版的一本书的“书”表中的标题。我有一个数据库存储过程(函数),我想使用它来执行此查找。我不希望它持久化到数据库中,而只是在执行“作者”列表(和显示)时进行动态评估。对于列表,理想情况下也可以排序。
注意:使用Oracle datbase
显然,这不是我的真实示例,我实际上是在扩展旧数据库,并且无法修改该结构。...我有很多可以使用的存储过程。所以问题仍然存在...我希望我的域类从数据库中提取一个存储过程的结果值。
我在网上找到了使用瞬变的示例,但不是以这种方式...我滥用它了吗?如何在g&g和GORM中利用存储过程?
我也找到了使用存储过程的例子,像这样
http://www.craigburke.com/post/44771719252/oracle-stored-procs-in-grails
但是缺少如何在 View 中实现这一点...
tia ...
K.
请您参考如下方法:
与其将其声明为 transient ,不如将其映射为formula
class Author {
String name
String favoriteBook
static mapping = {
favoriteBook formula:'find_favorite_book(id)'
}
(或调用自定义函数所需的任何SQL)。
引用链接的文档
Note that the formula expressed in the ORM DSL is SQL so references to other properties should relate to the persistence model not the object model.
即,如果您需要在公式中引用其他属性,则必须使用数据库列名称(
some_property)而不是属性名称(
someProperty)。如果您不想猜测命名约定,则应考虑使要在公式中使用的任何列的属性到列的映射都显式
static mapping = {
someProperty column:'my_unusual_column'
}




