我在查询Derby数据库时遇到问题。我在JPA中使用Hibernate。问题与(可能)与布尔列有关。每个查询以错误结尾:
org.hibernate.exception.SQLGrammarException:不支持’BOOLEAN’和’INTEGER’之间的比较。
类型必须是可比较的。字符串类型还必须具有匹配的排序规则。如果排序规则不匹配,则可能的解决方案是强制转换操作数以将其强制为默认排序规则(例如,从sys.systables
WHERE CAST(tablename AS VARCHAR(128))=’T1’的SELECT表名)
您可以在下面找到示例代码和配置。样本经过简化,以便于阅读。这是我的JPA实体:
@Entity
public abstract class Task implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
protected long id;
@Column
protected boolean deleted;
public long getId() {
return id;
}
public boolean isDeleted() {
return deleted;
}
public void setId(long id) {
this.id = id;
}
public void setDeleted(boolean deleted) {
this.deleted = deleted;
}
@Override
public int hashCode() {
return id;
}
@Override
public boolean equals(Object object) {
if (object == null) {
return false;
}
if (!this.getClass().equals(object.getClass())) {
return false;
}
EntityObject other = (EntityObject) object;
if (this.id != other.id) {
return false;
}
return true;
}
@Override
public String toString() {
return "EntityObject[ id=" + id + " ]";
}
}
我的JPA查询:
SELECT t FROM Task t WHERE deleted = false
我的JPA配置:
<persistence-unit name="PU1" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>jdbc/myapp</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.DerbyDialect"/>
</properties>
</persistence-unit>
怎么了?如何解决?感谢您的任何建议。
降级没有帮助。这是对我有效的有效解决方案:
import java.sql.Types;
import org.hibernate.dialect.DerbyTenSevenDialect;
public class DerbyDialect extends DerbyTenSevenDialect {
public DerbyDialect() {
// fix Derby dialect boolean data type mapping error
registerColumnType(Types.BOOLEAN, "INTEGER");
}
}
我想最好将方言中的“ true”和“ false”常量映射配置为Derby数据类型,但是上面的内容就足够了。
问题内容: 我正在学习python并从事练习。其中之一是对投票系统进行编码,以便使用列表在比赛的23名球员中选择最佳球员。 我正在使用。 我的代码: 我懂了 TypeError:“ str”和“ int”的实例之间不支持“ <=” 但是我这里没有任何字符串,所有变量都是整数。 问题答案: 更改 至 您将从控制台以字符串形式获取输入,因此必须将输入字符串转换为对象才能进行数字运算。
问题是从dict1开始的= 这就是数据帧的外观: 打印(len_c):长度: 550, dtype: int64 打印(len_a_b):长度:6646,数据类型:int64 正如你在标记化之后看到的,我们这里有100%的整数,但是python仍然说它没有。当数据不是两个完整的数据帧时,同样的函数也适用。
问题内容: 我正在开发Java桌面应用程序,并且对使用JavaFX非常感兴趣。我计划使用MVC架构,因为我对Java EE和MVC模型有一定的经验。 我想将数据存储在嵌入式derby数据库中,并使用Hibernate作为持久层,但是找不到关于使用hibernate和JavaFX实现MVC的出色教程。 我已经创建了持久性文件,但不确定如何使其与JavaFX一起使用。在Java EE中,我注入了EJB
问题内容: 当前程序的输出为“奇怪”。但是,两个变量共享相同的参考。为什么第二次和第三次比较不正确? 输出: 问题答案: 这就是自动装箱的产物,并且Integer在Java中是不可变的。 该和被翻译成大致是这样的。
问题内容: 但没人回答我的下一个问题。经典的hibernate方法使用和JPA 实现之间有什么区别?我听说此JPA实现使用并像包装器一样工作,这是真的吗? 问题答案: 确实。 JPA只是一个API,允许您从使用的持久层中进行抽象。Hibernate提供了充当接口的实现,它使用与Hibernate 相同的基础方法。 这个想法是,例如,您可以将实现切换到Eclipse Link,而不必更改任何源代码。
问题内容: 根据此链接,没有提及支持4.2hibernate的derby方言。 Hibernate不支持Apache Derby吗? 问题答案: 如果您查看javadoc,则还有更多方言。截至对此问题进行最新更新时,它们是: (已弃用,请参见HHH-6073), , 和 。 对于10.7之后的Derby版本,假设没有添加新的Derby方言类,则该方言是最合适的。(但是,如果发生这种情况,建议选择小