我有一个如下所示的查询
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/