Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Calculated поля при наследовании.
|
|||
|---|---|---|---|
|
#18+
Есть 3 класса class A Extends %Persistent { Property name As %String [Calculated, SQLComputeCode={s {*}="Привет A"},SQLComputed]; } class B Extends A { Property name As %String [Calculated, SQLComputeCode={s {*}="Привет B"},SQLComputed]; } class C Extends B { Property name As %String [Calculated, SQLComputeCode={s {*}="Привет C"},SQLComputed]; } Создаем объект класса C и сохраняем. Теперь, если мы будет выбирать данные sql-запросом из таблицы A, то значение calculated поля для строк класса С, будет "Привет А", а надо "Привет С". Что сделать чтоб работало корректно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2008, 07:55 |
|
||
|
Calculated поля при наследовании.
|
|||
|---|---|---|---|
|
#18+
Нужно попробовать проверить, правильно ли работает свойсво %ClassName (или %CLASSNAME). Или метод это, не помню :-) В общем, определяете тип класса и выражение вычисляете исходя из имени класса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2008, 08:43 |
|
||
|
Calculated поля при наследовании.
|
|||
|---|---|---|---|
|
#18+
Например, так: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2008, 11:23 |
|
||
|
Calculated поля при наследовании.
|
|||
|---|---|---|---|
|
#18+
servitНапример, так: Код: plaintext 1. 2. 3. 4. Если данных у меня очень много, то поднятие на память объекта будет существенно тормозить выборку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2008, 12:35 |
|
||
|
Calculated поля при наследовании.
|
|||
|---|---|---|---|
|
#18+
=Dimon=... Если данных у меня очень много, то поднятие на память объекта будет существенно тормозить выборку. Это всего лишь пример. Вы можете использовать уровень глобалов (самый первый индекс) для ускорения. Следующему примеру требуется доработка: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2008, 13:22 |
|
||
|
Calculated поля при наследовании.
|
|||
|---|---|---|---|
|
#18+
=Dimon=, я определяю метод расчета только на основном классе, и юзаю что-то вроде s {*}="Привет "_{x__classname} ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2008, 04:56 |
|
||
|
Calculated поля при наследовании.
|
|||
|---|---|---|---|
|
#18+
Вообще, мне не имя класса нужно, я хотел показать, что calculated поля при наследовании ведут себя в таблице так, как это определено в таблице, из которой мы выбираем данные. То есть я могу вообще переделать реализацию классов примерно так: class A Extends %Persistent { Property subName As %String; Property fullName As %String [Transient, SQLComputeCode={s {*}={subName}_" "_{name}},SQLComputed]; Property name As %String; } class B Extends A { Property fullName As %String [Transient, SQLComputeCode={s {*}={name}},SQLComputed]; } class C Extends B { Property fullName As %String; // здесь свойство хранимое } Теперь при запросе, напрмер, к таблице "А", вся идеология наследования и полиморфизма идет в "печь" :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 04:01 |
|
||
|
Calculated поля при наследовании.
|
|||
|---|---|---|---|
|
#18+
To =Dimon= У Вас вычисляемые поля представлены лишь для SQL. А разве SQL к ООП имеет отношение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 08:58 |
|
||
|
Calculated поля при наследовании.
|
|||
|---|---|---|---|
|
#18+
servitTo =Dimon= У Вас вычисляемые поля представлены лишь для SQL. А разве SQL к ООП имеет отношение? А разве нет? Не проблемы вычислимые поля сделать для объектов, перекрыв геттеры. SQL - это всего лишь один из доступов к данным, как это описано на сайте Intersystems. Существует 3 механизма доступа к данным: SQL, прямой и объектный. Я так думаю, что каждый механизм должен обеспечивать правильный результат. То есть, если значение свойства объекта хранится в глобале, то хоть прямым, хоть объектным, хоть SQL результат должен быть один. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 09:59 |
|
||
|
Calculated поля при наследовании.
|
|||
|---|---|---|---|
|
#18+
=Dimon= А разве нет? Не проблемы вычислимые поля сделать для объектов, перекрыв геттеры. SQL - это всего лишь один из доступов к данным, как это описано на сайте Intersystems. Существует 3 механизма доступа к данным: SQL, прямой и объектный. Я так думаю, что каждый механизм должен обеспечивать правильный результат. То есть, если значение свойства объекта хранится в глобале, то хоть прямым, хоть объектным, хоть SQL результат должен быть один. Хотя доступа к данным три, они не всегда равнозначны (взаимозаменяемы): 1) Trigger <> Callback method Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 2) Вычисляемое поле через SQL <> Вычисляемое поле через геттер Код: plaintext 1. 2. 3. 4. 5. 6. 3) Вы можете через "CREATE TABLE" создать две таблицы, при этом чтобы одна наследовалась от другой? 4) Безопасность 5) другое PS: как Вы думаете, а триггеры наследуются? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 19:56 |
|
||
|
|

start [/forum/topic.php?fid=39&msg=35701036&tid=1558641]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
83ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 246ms |
| total: | 420ms |

| 0 / 0 |
