Похоже, что использовался компилятор машинописного текста до версии 2.4, где они добавили поддержку строковых значений в перечислениях. Обычно происходит обратное отображение значений в перечисления, а значения обычно являются числами. Но если вы попытаетесь использовать строки до 2.4, компилятор не будет знать, что с этим делать (и на самом деле вызовет ошибки), но все равно будет генерировать источник.
Сравните 2,4:
var Sizes;
(function (Sizes) {
Sizes["Tiny"] = "Tiny";
Sizes["VerySmall"] = "Very Small";
Sizes["Small"] = "Small";
Sizes["Medium"] = "Medium";
Sizes["Large"] = "Large";
Sizes["VeryLarge"] = "Very Large";
})(Sizes || (Sizes = {}));
С 2,3:
var Sizes;
(function (Sizes) {
Sizes[Sizes["Tiny"] = "Tiny"] = "Tiny";
Sizes[Sizes["VerySmall"] = "Very Small"] = "VerySmall";
Sizes[Sizes["Small"] = "Small"] = "Small";
Sizes[Sizes["Medium"] = "Medium"] = "Medium";
Sizes[Sizes["Large"] = "Large"] = "Large";
Sizes[Sizes["VeryLarge"] = "Very Large"] = "VeryLarge";
})(Sizes || (Sizes = {}));
И 2,3 без строковых значений:
var Sizes;
(function (Sizes) {
Sizes[Sizes["Tiny"] = 0] = "Tiny";
Sizes[Sizes["VerySmall"] = 1] = "VerySmall";
Sizes[Sizes["Small"] = 2] = "Small";
Sizes[Sizes["Medium"] = 3] = "Medium";
Sizes[Sizes["Large"] = 4] = "Large";
Sizes[Sizes["VeryLarge"] = 5] = "VeryLarge";
})(Sizes || (Sizes = {}));
Если вы хотите принудительно выполнить обратное отображение в версии 2.4 и выше вы можете присвоить значения any
.
enum Sizes {
Tiny = <any>"Tiny",
VerySmall = <any>"Very Small",
Small = <any>"Small",
Medium = <any>"Medium",
Large = <any>"Large",
VeryLarge = <any>"Very Large"
}
Просто назовите это функцией.
Смотря на динамическую ссылку метода, лучшее, которое можно, вероятно, сделать, использовать executeQuery
вместо count*
:
Message.executeQuery('select count(m) from Message m where SIZE(m.body) < 25')
Править: Вот несколько ссылок, которые могли бы помочь с записью/выполнением запроса: