gpt4 book ai didi

Grails 连接数据库字段

转载 作者:行者123 更新时间:2023-12-02 03:19:01 24 4
gpt4 key购买 nike

我正在尝试学习 Grails,但仍处于初学者水平。我做了一个很小的应用程序,基本上你可以在其中添加事件,人们可以写关于它们的评论并给它们打分。所以我有一个 eventController 和 reviewController。评分只是评论中的一个整数。但现在我想显示一个事件的总体评分。所以事件评分应该是相应评分值的平均值。

这是我最初设置评级的事件域代码,我省略了约束和 toString:

class Event {
Double dRating = 2

static hasMany = [ratings:Rating]

}

Controller 很简单:

class EventController {

def scaffold = Event
}

评分域文件:

class Rating {
String comment
java.util.Date date = new java.util.Date()
Integer rating
Event event
}

评分控制者是:

class RatingController {
def scaffold = Rating
}

希望我没有犯错,我必须翻译变量名以便它们易于理解。

我猜想在设置 dRating 的地方,我可以以某种方式添加一些计算,但我什至不知道如何访问评级的值,而且我尝试的所有操作都以大量错误而告终,不得不重新启动一次又一次的应用程序。我尝试在 Controller 中添加计算,但我不知道如何将值导入数据库。那么我实际上应该在哪里放置逻辑,以及如何访问这些值?

如果有任何其他文件很重要,请告诉我。

希望得到一些关于如何开始做这件事的提示,我没想到会这么难。

最佳答案

首先我建议开始阅读 grails 文档。稍后从您的问题中不太清楚您在问什么,可能有几个地方或可能在域字段中设置值并将其保存到数据库中。我告诉所有这些我所知道的:

  1. 如果它是需要应用于您的 dRating 字段的广义计算,则创建一个具有标准 bean 命名约定的 setter 并在那里执行此操作。例如,您想从 1000 中找到百分比,然后将其添加到 dRating

    class Event {

    static hasMany = [ratings:Rating]

    Double dRating

    void setDRating(Double value){
    this.dRating = value * 100/1000 // alternatively value /10
    }
    }
  2. 在 commandObject 中执行:如果您不想将某些计算和验证放在域中,则将它们放在命令对象中。参见 this .您可以在任何时候通过 .properties 绑定(bind)机制将命令对象的值分配给域对象。例如,

        yourDomainObject.properties = yourcommandObjectObject.properties

    记住具有相同名称的属性将被绑定(bind)。

  3. 在服务中执行:您可以在服务方法中进行计算,将该服务注入(inject)您的 Controller 并调用该方法来执行计算,甚至持久保存到数据库。请记住,服务默认是事务性的。

希望对您有所帮助!

关于Grails 连接数据库字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34743746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com