Свойство, которое вычисляется, SqlComputed, с пользовательским геттером, все одновременно: что имеет приоритет?

Это код, извлеченный из этого проекта (примечание: переформатирован для ясности):

Class Util.Data.EmojiType Extends %Persistent
{

Property CodePoint As %Integer;

Property UnicodeChar As %String [ 
    Calculated, 
    ReadOnly, 
    SqlComputeCode = { set {*} = $wchar({CodePoint})}, 
    SqlComputed, 
    Transient 
];

// snip

Method UnicodeCharGet() As %String
{
     quit $wchar(..CodePoint)
}

Я действительно не понимаю. Почему UnicodeChar и вычисляется, и и имеет собственный геттер (ох), плюс пользовательский геттер делает то же самое, что и SqlComputeCode?

И если я попытаюсь получить это свойство, какая часть всего этого сработает?


person fge    schedule 29.02.2016    source источник


Ответы (1)


Пользовательский геттер может быть вызван, даже если свойство не вычисляется. Но работает только в режиме объектного доступа. А чтобы получить вычисляемое значение через SQL-запрос, в свойстве должны быть определены все свойства: Calculated, SqlComputed и SqlComputeCode. А в случае, когда определен SqlComputeCode, этот код используется только в SQL-запросе. Если у свойства есть свойство Calculated, но не SqlComputed, оно не будет отображаться в результатах SQL.

SqlComputed, Рассчитано

person DAiMor    schedule 29.02.2016