4

Siena 2.0.7 と Play 1.2.4 でブール値を扱うのに苦労しています。

クラスのコンストラクターで、ブール値を FALSE に設定しました。次に、オブジェクトを保存します。データストア ビューアで、ブール フィールドが 0 として保存されていることがわかります。

データベースからその行を取得すると、ブール フィールドは TRUE として解析されます。私は道に迷っています、あなたが助けてくれることを願っています!

クラス:

@Entity
public class CMessage extends EnhancedModel 
{
    public CMessage() {
        this.isProcessed = false;
    }

public CMessage(String bridgeId) {
    this.bridgeId = bridgeId;

    // set createdDate & expireDate
    this.createdDate = new Date();
    this.isProcessed = false;
}

@Id(Generator.AUTO_INCREMENT)
public Long id;

@NotNull
public String bridgeId;

@NotNull
@DateTime
public Date createdDate;

@NotNull
public boolean isProcessed;

}

テスト:

    CMessage msg = new models.CMessage("bridge");
    Logger.info("saved isProcessed = %s", msg.isProcessed); // always gives false
    msg.save();

    Logger.info("saved isProcessed = %s", msg.isProcessed); // always gives false

    CMessage get = (CMessage) CMessage.findAll().get(0);
    Logger.info("got isProcessed = %s", get.isProcessed); // always gives true
    assertEquals(false, get.isProcessed);

note: i haven't tested on GAE itself, only on my dev machine. Maybe gae datastore does get it right...

4

2 に答える 2

4

Siena の現在のバージョンのバグのようです: https://github.com/mandubian/siena/pull/18

于 2012-03-27T09:36:29.373 に答える
1

True を取得するのは非常に奇妙です...
ブール値の代わりにブール値を使用して、同じ動作をするかどうかを確認できますか?
ありがとう

于 2012-03-26T21:01:14.053 に答える