java - Hibernate 返回另一个对象

标签 java hibernate

我有一个如下所示的查询

Document document = DocDAO.getSession().read(someId);
MyFile file = (MyFile) DAO.getSession()
.createQuery("SELECT file FROM MyFile file WHERE file.document = :document AND file.version = :version")
.setParameter("document", document)
.setParameter("version", version)
.uniqueResult();

现在,我应该得到一个文件,其中 file.getDocument().getId() == someId,并且 someId 是 BigInteger。但不幸的是,他们并不平等。什么样的错误会导致查询的实体不是我要查找的实体?

干杯

尼克

最佳答案

BigInteger 是一个对象,而不是基元。您可能需要执行 bigInt1.equals(bigInt2) 而不是 bigInt1 == bigInt2

编辑:
也许我错了。 Javadoc 说:

BigInteger provides analogues to all of Java's primitive integer operators

再次编辑: 如果您想取消 BigInteger,请尝试将 JPA 实体属性声明为 Long(如果不可为空,则声明为 long),然后使用 @Column 注释来定义实际的数据库列结构(如果需要)。以下是此注释的示例:

@Column(updatable = false, name = "MY_DB_COLUMN", nullable = false, length=12)
private long myEntityAttribute;

我不记得当列是数字时如何使用length属性。最大位数?您可以查找 @Column 的详细信息并进行实验,直到获得正确结果。

关于java - Hibernate 返回另一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3737641/

相关文章:

hibernate - 正确使用JPA标准API,谓词以及CriteriaQuery的where方法

java - 没有名为 EntityManager 的持久性提供程序

java - Datastax 驱动程序日志级别

java - 扫描计数为 dynamodb 表返回的数量明显减少

java - 如何使用 Spring Security 对 Active Directory 服务器进行身份验证?

java - Hibernate:如何获取可选的外键数据?

Java Mockito 如何为属性设置新值

java - 加载属性文件给出 null

java - 过滤 JPA 实体而不从数据库中删除它们

java - Hibernate 需要 POJO 吗?