Позвольте мне подробно описать этот вопрос, чтобы избежать ситуации X-Y.Как установить значение поля @Transient после запроса? Использование критериев Hibernate для запроса
Я хочу использовать спящий режим, чтобы сделать LIKE
запрос для получения регистров в таблице Product
где Product
«s User
имеет свою входную строку в качестве полного имени. Что-то в SQL, как:
SELECT * FROM product WHERE id_user IN (SELECT id_user FROM users WHERE CONCAT(first_name, ' ', last_name) LIKE ?)
Я доволен Hibernate Criteria, но в данном случае, похоже, не имеет никакого способа сделать объединение столбцов значений поиска в Criteria (я не хочу, чтобы произвести некоторые пользовательские критерии, в сторону), так что я пытаюсь использовать Restriction.sqlRestriction()
, но я обнаружил, что в некоторых случаях createAlia()
довольно легко, а sqlRestriction
невозможно, например, как:
criteria.createAlias("user.supervisor.teamleader", "uT");
Итак, я рассматриваю другое решение: создание @Transient
поле User
, чтобы сохранить полное имя, объединив first_name
, " "
и last_name
, потому что теперь в базе данных нет столбца с именем full_name
, и я не хочу прикасаться к структуре таблицы, которая требует изменения в производственной базе данных.
Если я объявляю full_name
поля в конструкторе по умолчанию User
класса, когда я получить некоторые User
объект из базы данных, это будет поле содержит first_name + " " + last_name
как я ожидаю, или это будет null
?
О первом моменте, спасибо, потому что я точно не знаю порядок строительства сущности и ее населения.Что касается второго момента, мой вопрос четко определен, потому что пользователь может ввести «Джон», «Белый» или «Джон Уайт», а «Джон» - как имя, а «Белый» - как фамилия. И третий момент, к моему удивлению, я просто нашел тот же пост после того, как задал этот вопрос ... Иногда я не знаю точного термина, такого как «производное свойство» в этом случае .... Thx. Примите ваш ответ. – FaithReaper
@FaithReaper Добро пожаловать. Я обновляю свой ответ. –