Hibernate返回另一个对象

时间:2010-09-17 17:42:29

标签: 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。但不幸的是,他们并不平等。什么样的错误可能导致被查询的实体不是我正在寻找的实体?

干杯

的Nik

1 个答案:

答案 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的详细信息并进行实验,直到您做对了。