2

車両のリストを含むドメイン (所有者) があります。サービス クラス メソッドで、所有者の車両リストからいくつかの車両を追加し、いくつかの車両を削除しようとしています。

public Owner edit(Long ownerId) {

    Owner owner

    Owner.withTransaction { status ->
        if (ownerId) {
            def vehicle
            owner = Owner.get(ownerId)
            if (owner) {
                // add vehicles
                addVechicleList.each {
                    vehicle = Vehicle.get(new Long(it))
                    if (vehicle) {
                        owner.addToVehicleList(vehicle)
                    }
                }

                // remove vehicles
                removeVehicleList.each {
                    vehicle = Vehicle.get(new Long(it))
                    if (vehicle) {
                        owner.removeFromVehicleList(vehicle)
                    }
                }

                owner?.save(flush: true)

            }
    } // end transaction
    Owner newOwner = Owner.get(ownerId)
    return newOwner // this has the newly added vehicle but not the removed vehicle.
}

ドメイン クラス

Owner.groovy

class Owner {
    String ownerName
    Date dateCreated
    Date lastUpdated

    static hasMany = [vehicleList: Vehicle]

    static constraints = {
    // some constraints
    }

}

Vehicle.groovy

class Vehicle {
    String vehicleName
    Owner owner
    Date dateCreated
    Date lastUpdated

    static belongsTo = Owner
    static hasMany = [owners: Owner]

    static constraints = {
        // some constraints
    }
}

私はデータを保存しましたflushflushまた、削除されたオブジェクトが含まれています。しかし、UI から新しいリクエストを更新または配置すると、所有者の詳細を取得するだけで、正しい値が取得されます。データを保存した後、ブレークポイントを配置してDBを表示しようとしました。データベースは更新されましたが、get() メソッドは正しい値を取得しませんでした。私は grails 2.2 を使用しています。コードに何か不足していますか?? なぜ更新された値を取得していないのですか??

4

1 に答える 1

0

Ownerクラス名を他の名前に変更してみてください。Event数日前にクラスで同じ問題が発生しました:)

于 2013-06-11T19:30:12.097 に答える