以下のマップから簡単な削除で何が間違っているのかを教えてください。私の知る限り groovy/grails、マップから削除することができません
allButThis ...
all is [1: Issue-1, 2: Issue-2, 3: Issue-3]
all with 2 removed: [1: Issue-1, 2: Issue-2, 3: Issue-3]
を期待通りに
public class Issue {
...
def allButThis() {
println "allButThis ..."
def all = Issue.list()
println "all is ${all}"
all.remove(this.id)
println "all with ${this.id} removed: ${all}"
return all
}
String toString() {return "${id}: ${title}"}
私はこれを実行すると、私は次のような結果を得ること、すなわち、上記2項目が削除されていない、この削除が動作するはずです、あたり例えばhttp://groovy.codehaus.org/JN1035-Mapsここで、「削除」はページの3分の1に記載されています。
Grails 1.3.7を使用しています。
ありがとう
P.S.私はtoString()メソッド(上記)を追加しました。おそらく私は自分自身をだましていました。
-------------更新----------私は私のtoString()メソッドを除去し、すなわち、ロブのソリューション、続い
:
をall.remove(this)
println "all with ${this} removed: ${all}"
生成:
all is [momentum.Issue : 1, momentum.Issue : 2, momentum.Issue : 3]
all with momentum.Issue : 2 removed: [momentum.Issue : 1, momentum.Issue : 3]
ありがとうCrudolf。私は、 ".findAll"がより安全であることについてちょっと混乱していますが、.withCriteriaを推奨しました。展開していただけますか? – Ray
混乱のために申し訳ありません: 'findAll'の代わりに' withCriteria'を使うのは安全です。しかし、私はソフトウェア層ではなくデータベース層で「これ」を除外します。したがって、同じ 'id'を持つオブジェクトを除外するクエリを作成する必要があります。このケースでは、「findAll」条件よりもwithCriteriaが好きです。上記のようにすると、後でコレクションを操作する必要はありません。 – Chris
Crudolf、これは私にとって理にかなっていることです。データベースレイヤーでやります。しかし、なぜあなたが.withCriteriaの方が好きなのか、まだわかりません.findAllよりも理解したいと思います。私は使用して幸せです。withCriteriaは、なぜそれがfindAllと異なるのかを理解したいだけです。それはコードを行うためのほんの明確な方法なのでしょうか?ありがとう – Ray