0

ドメイン オブジェクトで save メソッドを呼び出すときに問題が発生しました。エラーは次のとおりです。

groovy.lang.MissingMethodException: No signature of method: static my.awesome.Class.FeedHit.save() is applicable for argument types: () values: []
Possible solutions: save(), save(java.lang.Boolean), save(java.util.Map), wait(), any(), wait(long)

FeedHits の配列を調べ、フラグを更新してから、save メソッドを呼び出しています。

void updateFeedHits(Set<FeedHit> list, FeedHitStatus status) {
    for (FeedHit feedHit: list) {
        feedHit.status = status
        try {
            feedHit.save()
        } catch (Exception ex) {
            log.info("unknown exception during update FeedHit", ex)
        }
    }
}

他の StackOVerflow ユーザーが同じ問題を抱えているのを見たことがありますが、それはテスト中だけです。このコードは通常のリリース コードです。

どんな助けでも大歓迎です。

編集:

FeedHit オブジェクトを少し編集したものを次に示します。

class FeedHit {

    Feed feed
    String title
    String body
    String url
    FeedHitStatus status
    String sourceId
    String hash
    Date publishedDate
    Date dateCreated = new Date()
    Integer pos = -1

    static constraints = {
        alert(nullable: true)
        title(nullable: true)
        body(nullable: true)
        url(nullable: true)
        status(nullable: true)
        sourceId(nullable: true)
        hash(nullable: true)
        pos(nullable: true)
        publishedDate(nullable: true)
        dateCreated(nullable: true)
    }

    static mapping = {
        table('alert_hit')
        autoTimestamp false
        version(false)
        alert(column: 'alert_id')
        body(sqlType: 'text')
        url(sqlType: 'text')
        sourceId(column: 'sourceId')
        publishedDate(column: 'publishedDate')
        dateCreated(column: 'dateCreated')
    }

    /**
     * Generates a hash from title, body and url.
     */
    public AlertHit generateHash() {
         StringBuffer sb = new StringBuffer();
        if (this.title != null) {
            sb.append(this.title);
        }
        if (this.body != null) {
            sb.append(this.body);
        }
        if (this.url != null) {
            sb.append(this.url);
        }
        if (this.publishedDate != null) {
            sb.append(this.publishedDate.getTime());
        }
        if (sb.length() > 0) {
            hash = Md5Hash.hash(sb.toString());
        }
        this
    }

    @Override
    public String toString() {
        return "AlertHit{" +
            "id=" + id +
            ", alert=" + alert +
            ", title='" + title + '\'' +
            ", body='" + body + '\'' +
            ", url='" + url + '\'' +
            ", status=" + status +
            ", sourceId='" + sourceId + '\'' +
            ", hash='" + hash + '\'' +
            ", publishedDate=" + publishedDate +
            ", dateCreated=" + dateCreated +
            ", pos=" + pos +
            ", version=" + version +
            '}';
    }
}
4

1 に答える 1

1

grails の外部でドメイン クラスを使用する場合は、GORM 関数に注釈を付ける必要があります。http://www.rimerosolutions.com/using-gorm-standalone-outside-grails/を参照してください。

ネイティブ スレッド以外の方法を使用することをお勧めします。試してください: Quartz-Plugin

于 2013-08-27T11:50:59.947 に答える