Java 在HQL中使用布尔值

Java 在HQL中使用布尔值,java,hibernate,Java,Hibernate,我有一个产品类,其属性如下: Boolean latest; public boolean isLatest() { return latest; } public void setLatest(boolean latest) { this.latest = latest; } 在数据库中,属性是位类型,具有真/假值 我想选择最新=真的产品。我的hql是: 来自产品,其中最新=真 我还尝试: 来自产品p,其中p.isLatest为真 从最新的是真实的产品 但它总是返回所有产

我有一个
产品
类,其属性如下:

Boolean latest;

public boolean isLatest() {
    return latest;
}

public void setLatest(boolean latest) {
    this.latest = latest;
}
在数据库中,属性是位类型,具有真/假值

我想选择最新=真的产品。我的hql是:

来自产品,其中最新=真

我还尝试:

来自产品p,其中p.isLatest为真

从最新的是真实的产品


但它总是返回所有产品或失败。有没有办法选择最新属性为true的产品。任何帮助都会很好。

当我遇到这个问题时,我正在ApacheDerby数据库上使用JDBC。我试图设置布尔字段的值,并尝试“=true”、“=1”等。最后,我使用了一个命名参数,如下所示,这就是我如何使我的情况起作用的原因

session.createQuery("SELECT something FROM Product WHERE latest = :latest").setBoolean("latest", Boolean.TRUE);

希望这能帮助有类似情况的人

我认为这取决于布尔值的存储方式。有关更多信息,请参见此问题:如果将
getLatest()
而不是
isLatest()
添加到实体中,则只需看看它是否有效?@Predrag isLatest()是布尔值的标准表示法。我不确定这是否会成为问题,但你不应该把布尔和布尔混为一谈。如果可以为空,则使用布尔值。如果不能为null,则使用boolean。这很简单(在我的项目中尝试过,
为true
=true
这两种方法都有效,使用
isLatest()
),因此它必须足够小,很容易被忽略。尝试将类型从
Boolean
更改为
Boolean
,因为您的getter和setter正在使用基本布尔类型。哪个数据库@布拉德利菲茨:
代表布尔值。