Hibernate возвращает другой объект - PullRequest
0 голосов
/ 17 сентября 2010

У меня есть запрос, который выглядит так

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 Ответ

1 голос
/ 17 сентября 2010

BigInteger - это объект, а не примитив. Возможно, вам придется сделать bigInt1.equals(bigInt2) вместо bigInt1 == bigInt2.

EDIT:
Может быть, я ошибаюсь по этому поводу. Джавадок говорит:

BigInteger предоставляет аналоги для всех примитивных целочисленных операторов Java

ИЗМЕНИТЬ СНОВА: Если вы хотите покончить с BigInteger, попробуйте объявить свой атрибут сущности JPA как Long (или long, если он не обнуляемый), а затем используйте аннотацию @Column, чтобы определить, какова фактическая структура столбца базы данных при необходимости , Вот пример этой аннотации:

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

Я точно не помню, как использовать атрибут length, когда столбец числовой. Максимальное количество цифр? Вы можете посмотреть детали для @Column и экспериментировать, пока не получите правильное значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...