我有一个看起来像这样的查询
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。但不幸的是,他们并不平等。什么样的错误可能导致被查询的实体不是我正在寻找的实体?
干杯
的Nik
答案 0 :(得分:1)
BigInteger是一个对象,而不是一个原始对象。您可能需要bigInt1.equals(bigInt2)
而不是bigInt1 == bigInt2
。
编辑:
也许我错了。 Javadoc说:
BigInteger为所有Java的原始整数运算符提供类似物
再次编辑:
如果您想取消BigInteger,请尝试将您的JPA实体属性声明为Long
(如果它不可为空,则为long
),然后使用@Column
注释来定义实际内容必要时,数据库列结构。以下是此注释的示例:
@Column(updatable = false, name = "MY_DB_COLUMN", nullable = false, length=12)
private long myEntityAttribute;
当列是数字时,我不记得如何使用length
属性。最大位数?您可以查看@Column
的详细信息并进行实验,直到您做对了。