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正在使用基本布尔类型。哪个数据库@布拉德利菲茨:是
代表布尔值。