
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
16.01.2012, 11:32:25
|
|||
|---|---|---|---|
Hibernate + запрос с пользовательской функцией |
|||
|
#18+
С хибером общаюсь относительно недавно(а мое прошлое дает о себе знать) я хотеть использовать в запросе какую либо пользовательскую функцию, что нибудь вроде: "select * from entity where MyClass.myStatMethod(id)" Такое возможно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2012, 11:40:27
|
|||
|---|---|---|---|
Hibernate + запрос с пользовательской функцией |
|||
|
#18+
Скорее всего нет. Разбейте это на вычисление значения функции и подстановку в полученного значения в запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2012, 11:43:55
|
|||
|---|---|---|---|
Hibernate + запрос с пользовательской функцией |
|||
|
#18+
ОзверинС хибером общаюсь относительно недавно(а мое прошлое дает о себе знать) я хотеть использовать в запросе какую либо пользовательскую функцию, что нибудь вроде: "select * from entity where MyClass.myStatMethod(id)" Такое возможно? только в СУБД с прекомпиляцией для ускорения UDF ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2012, 11:48:44
|
|||
|---|---|---|---|
Hibernate + запрос с пользовательской функцией |
|||
|
#18+
svenom, хорошо - тогда чуть иначе. В таблице 2 поля(id, text). Значения первого поля = int (описания поля в сущности @Enumerated(value = EnumType.ORDINAL) сейчас это около 19 макс). Значение второго поля хотелось бы вычислить из первого, что нить вроде описание поля в сущности @Enumerated(value = EnumType.STRING). или if id=1 text="id1" if id=2 text="id2" if id=3 text="id3" Так как данных очень не мало, не хотелось бы делать выборку объектов, все их исправлять, а потом апдейтить. Сама задача возникла в результате merge нескольких веток и в последующем вряд ли понадобиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2012, 11:51:24
|
|||
|---|---|---|---|
Hibernate + запрос с пользовательской функцией |
|||
|
#18+
Озверин, - занафига это надо? Составной ключик? - ОДНИМ SQL запросом на Update ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2012, 11:55:35
|
|||
|---|---|---|---|
Hibernate + запрос с пользовательской функцией |
|||
|
#18+
Petro123, так чтобы обновить одним запросом ..нужен запрос вида: "update e set text=MyClass.myMethod(id)" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2012, 11:58:51
|
|||
|---|---|---|---|
Hibernate + запрос с пользовательской функцией |
|||
|
#18+
ОзверинPetro123, так чтобы обновить одним запросом ..нужен запрос вида: "update e set text=MyClass.myMethod(id)" я в это HQL\ORM не врубаюсь :) - надо в СУБД Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2012, 12:06:54
|
|||
|---|---|---|---|
Hibernate + запрос с пользовательской функцией |
|||
|
#18+
Petro123, ну я примитивно привел логику обновления поля text ) Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Так вот, на данный момент в таблице есть поле id - которое хранит порядок перечисления(1,2,3), я добавляю поле text=которое будет хранить SECOND, MINUTE, HOUR. При первом старте надо обновить поле text по существующим id ) согласно моему MyEnum ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2012, 12:18:37
|
|||
|---|---|---|---|
Hibernate + запрос с пользовательской функцией |
|||
|
#18+
Озверин, оператор SQL decode вроде можно в SQL Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2012, 12:20:24
|
|||
|---|---|---|---|
Hibernate + запрос с пользовательской функцией |
|||
|
#18+
ещё сложнее условия, уже CASE, но его вроде только в VIEW Поэтому на СУБД я бы решал в динамике = VIEW с CASE над таблицей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2012, 12:28:55
|
|||
|---|---|---|---|
Hibernate + запрос с пользовательской функцией |
|||
|
#18+
Petro123, ok, спс;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2012, 15:12:00
|
|||
|---|---|---|---|
Hibernate + запрос с пользовательской функцией |
|||
|
#18+
Озверин Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Так вот, на данный момент в таблице есть поле id - которое хранит порядок перечисления(1,2,3), я добавляю поле text=которое будет хранить SECOND, MINUTE, HOUR. При первом старте надо обновить поле text по существующим id ) согласно моему MyEnum это тоже абстрактный пример или уже то, что действительно надо сделать? если второе, то вопрос - зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2012, 15:19:49
|
|||
|---|---|---|---|
Hibernate + запрос с пользовательской функцией |
|||
|
#18+
off chpasha, ну ему наверно приказали, да и всё. Если защищать ОРМ, то наверно тоже есть варианты: - вычисляемое поле замаппить (фальшивое) - это справочник и его можно штатно завести в системе. - это лог поминутный и куча если :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2012, 15:26:50
|
|||
|---|---|---|---|
Hibernate + запрос с пользовательской функцией |
|||
|
#18+
Petro123off chpasha, ну ему наверно приказали, да и всё. я потому и спрашиваю. на лицо ненужное дублирование информации. уже есть энум, и уже есть его порядковое представление в бд. любое текстовое представление из порядкового можно получить автоматом из энума. Petro123Если защищать ОРМ, то наверно тоже есть варианты: просто вводится новая пользовательская функция в диалект, например Код: java 1. а дальше пишется HQL как и хотел автор. но пока не очевидно нужно ли это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2012, 15:29:41
|
|||
|---|---|---|---|
Hibernate + запрос с пользовательской функцией |
|||
|
#18+
chpasha, +1 значит есть аналог UDF - круто ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2012, 15:34:58
|
|||
|---|---|---|---|
Hibernate + запрос с пользовательской функцией |
|||
|
#18+
Petro123chpasha, +1 значит есть аналог UDF - круто это не аналог, это и есть пользовательская функция (или любая другая). HQL передает ее как есть дальше на сервер. это пример, как расширить доступные в HQL функции своими путем кастомизации диалекта. точно так же можно ввести дополнительный тип, который может преобразовывать на лету 1,2,3 в SECONDS, HOURS и т.д. потому и не ясно, зачем их хранить явно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2012, 15:42:05
|
|||
|---|---|---|---|
Hibernate + запрос с пользовательской функцией |
|||
|
#18+
chpasha, я ж говорил причину, на период merge бранча и транка(когда работают старые версии программ и ставятся новые) нужна подобная функциональность и дублирование информации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2012, 15:43:43
|
|||
|---|---|---|---|
Hibernate + запрос с пользовательской функцией |
|||
|
#18+
chpasha, как создать на лету пользовательскую ф-ю в базе я знаю ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2012, 15:45:13
|
|||
|---|---|---|---|
Hibernate + запрос с пользовательской функцией |
|||
|
#18+
chpasha, блин, но пример с секундами и минутами абстрактный...там более слонжые названия перечисляемых полей, зачем так буквально воспринимать? Контекст задачи важен, а не данные..представьте, что перечисление абстрактное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2012, 15:49:13
|
|||
|---|---|---|---|
Hibernate + запрос с пользовательской функцией |
|||
|
#18+
Озверинchpasha, я ж говорил причину, на период merge бранча и транка(когда работают старые версии программ и ставятся новые) нужна подобная функциональность и дублирование информации. т.е. если по-русски, есть код, который зависит от наличия этого поля, так? имхо более лаконичным будет табличная функция: массив типа ['','SECDONDS','MINUTES'] и т.д. где позиция соответствует порядковому номеру. ee и вызывать. но для одного раза можно и update с case, и не понятно зачем для одного раза ОРМ приплетать. тут как раз работа для JDBC. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2012, 15:51:42
|
|||
|---|---|---|---|
Hibernate + запрос с пользовательской функцией |
|||
|
#18+
Озверинchpasha, там более слонжые названия перечисляемых полей, зачем так буквально воспринимать? мой пример тоже абстрактный, это совпадение, что он с датами работает. если нужно многократно - функция на стороне сервера. если однократно - скрипт на JDBC и забыл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2012, 15:57:02
|
|||
|---|---|---|---|
Hibernate + запрос с пользовательской функцией |
|||
|
#18+
chpashaОзверинchpasha, я ж говорил причину, на период merge бранча и транка(когда работают старые версии программ и ставятся новые) нужна подобная функциональность и дублирование информации. т.е. если по-русски, есть код, который зависит от наличия этого поля, так? имхо более лаконичным будет табличная функция: массив типа ['','SECDONDS','MINUTES'] и т.д. где позиция соответствует порядковому номеру. ee и вызывать. но для одного раза можно и update с case, и не понятно зачем для одного раза ОРМ приплетать. тут как раз работа для JDBC. ну орм приплетать потому что стандартных средств JDBC я не знаю для решения подобной задачи, а создание ф-и на лету придется прилично "кодировать" рефлексию, т.к. merge может длиться месяц другой, а логика на месте не стоит ;) В любом случае спасибо, буду думать дальше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2012, 16:05:23
|
|||
|---|---|---|---|
Hibernate + запрос с пользовательской функцией |
|||
|
#18+
Озверинну орм приплетать потому что стандартных средств JDBC я не знаю для решения подобной задачи для одноразового апдейта самое то. хотя я начинаю подозревать, что видимо не понимаю задачу. потому что проапдейтить данные один раз можно десятком способов. или речь именно о select * where? Озверин, а создание ф-и на лету придется прилично "кодировать" рефлексию почему налету? если мы все еще об энумах, то закодировать существующие состояния + добавлять новые. кстати как на счет динамически генерить where с помощью criteria, имхо они как раз для этого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2012, 16:12:32
|
|||
|---|---|---|---|
Hibernate + запрос с пользовательской функцией |
|||
|
#18+
chpasha, одноразовый апдейт не сгодится , т.к. с одной базой могут работать и старые версии и новые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.01.2012, 16:25:35
|
|||
|---|---|---|---|
Hibernate + запрос с пользовательской функцией |
|||
|
#18+
Озверинchpasha, одноразовый апдейт не сгодится , т.к. с одной базой могут работать и старые версии и новые. почему? У меня в БД был флаг версии и на клиенте. Клиент стартуя, проверяет версию и либо кричит, либо сам ОДНОРАЗОВО апдейтит. В 1С тоже так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=59&tablet=1&tid=2132832]: |
0ms |
get settings: |
9ms |
get forum list: |
22ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
366ms |
get topic data: |
17ms |
get forum data: |
5ms |
get page messages: |
72ms |
get tp. blocked users: |
2ms |
| others: | 349ms |
| total: | 854ms |

| 0 / 0 |
