Hibernate - Получить строку только с одним значением составного первичного ключа? - PullRequest
1 голос
/ 17 декабря 2011

У меня есть таблица (база данных Oracle), которая выглядит следующим образом:

CREATE TABLE example
(
    idEx INTEGER,
    idAdh INTEGER,
    date DATE,
    PRIMARY KEY (idEx, idAdh)
)

Я создал соответствующие классы в Netbeans, и у меня есть два класса, созданных для этой таблицы: Example.java и ExampleId.java,последний содержит два значения моего первичного ключа.

Теперь предположим, что у меня есть несколько записей, и я хотел бы удалить одну, используя только одно значение первичного ключа (например, idEx, чтотоже уникальный).Итак, сначала мне нужно get эту строку, но я не могу найти способ сделать это.Можно ли было бы сделать что-то подобное?

Example ex = (Example) session.get(Example.class, new ExampleId(?, idEx));

Мне нужно что-то, чтобы заменить этот ?, который будет действовать как подстановочный знак.

Или, может быть, это совсем не тот путь, и в этом случае я бы очень признателен за некоторые советы.

Ответы [ 2 ]

3 голосов
/ 17 декабря 2011

Вы должны получить ex с HQL-запросом.

1 голос
/ 17 декабря 2011

Невозможно получить это без запроса HQL / JPQL / Criteria, по уважительной причине.

Метод get возвращает один объект и автоматически генерирует запрос, подобный select * from table where key = :key.

Единственный способ гарантировать, что этот запрос вернет ровно одну строку, - это указать весь ключ. Если у вас нет полного доступного объекта PK, запрос вернет список объектов, в этот момент get больше не подходит.

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