#java #hibernate #jpa
#java #переход в режим гибернации #jpa
Вопрос:
Я начинаю работу с Hibernate, и у меня такая проблема, я не понимаю такую строку в коде, который я анализирую:
@JoinFormula( "REGEXP_REPLACE(phoneNumber, '\ (\d )-.*', '\1')::int" )
Источник, который я использую, является: https://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#embeddables
Я не знаю, где зависимость между идентификатором страны и номером телефона. С уважением
Ответ №1:
Прочитав немного после этого фрагмента, вы обнаружите
country
Ассоциация вUser
объекте отображается идентификатором страны, предоставленнымphoneNumber
свойством.
И
Следовательно,
@JoinFormula
аннотация используется для определения пользовательской ассоциации объединения между родительско-дочерней ассоциацией.
По сути, JOIN
между User
и Country
выполняется этим вычисленным значением.
Например, a User
с числом
40-123-4567
JOIN
отредактирован с помощью Country
, у которого был идентификатор
40
потому что REGEXP_REPLACE
функция способна экстраполировать это 40
из числа.
::int
является приведением типа.
Комментарии:
1. Итак, REGEXP_REPLACE возвращает значение на основе аргумента replace_string? Это вводит в заблуждение, потому что я понимаю, что replace_string изменяет текст (в первом аргументе)
2. @graluc REGEXP_REPLACE примет в качестве входных данных значение PhoneNumber и выведет другое значение, обработанное с помощью введенного регулярного выражения.
3. @graluc в этом случае он разделит строку на » -» и примет только первое вхождение, учитывая только числа.
4. @graluc привет! Подумайте о том, чтобы отметить ответ как принятый, если он разрешил ваши сомнения. В случае, если вам понадобятся другие классификации, дайте мне знать