【问题标题】:Siena / Play / GAE parses boolean field wrong: 0 = trueSiena / Play / GAE 解析布尔字段错误:0 = true
【发布时间】:2012-03-26 10:26:11
【问题描述】:

我很难在 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);

注意:我没有在 GAE 上测试过,只在我的开发机器上测试过。也许 gae 数据存储区确实做对了……

【问题讨论】:

    标签: java google-app-engine playframework google-cloud-datastore siena


    【解决方案1】:

    似乎是当前版本的锡耶纳的一个错误: https://github.com/mandubian/siena/pull/18

    【讨论】:

    • 嗯,我现在用 int 字段替换了所有布尔字段。希望bug尽快修复!
    • 我们如何知道这个更改将在哪个模块版本中进行?我刚用 2.0.7 测试过,但也有同样的问题。
    【解决方案2】:

    你得到一个 True 是很奇怪的......
    您能否尝试使用布尔值而不是布尔值来查看是否有相同的行为?
    谢谢

    【讨论】:

    • 试过了,但无济于事:(仍然给出“True”作为输出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    • 2021-06-05
    相关资源
    最近更新 更多