メインコンテンツまでスキップ
バージョン: v20 BETA

DataClassAttribute

データクラス属性は、それぞれのクラスのプロパティとして利用可能です。 例:

 nameAttribute:=ds.Company.name // クラス属性への参照
revenuesAttribute:=ds.Company["revenues"] // 別の書き方

このコードは、nameAttribute および revenuesAttribute 変数に、Company クラスの name および revenues 属性の参照をそれぞれ代入します。 このシンタックスは属性内に保管されている値を返すのではありません。その代わりに、属性自身への参照を返します。 値を管理するには、エンティティ を使用する必要があります。

DataClassAttribute オブジェクトが持つプロパティを読み取ることによって、データクラス属性に関する情報が取得できます。

データクラス属性オブジェクトを編集することは可能ですが、元となるデータベースストラクチャーは変更されません。

概要

.autoFilled : Boolean    属性値が 4D によって自動生成される場合に true です
.exposed : Boolean    属性が REST で公開されている場合に trueです
.fieldNumber : Integer    属性の内部的な 4Dフィールド番号を格納します
.fieldType : Integer    属性の 4Dデータベースタイプを格納します
.indexed : Boolean    属性に対して B-tree もしくは クラスターB-Tree インデックスが設定されている場合に true です
.inverseName : Text    リレーション先の属性名を格納します
.keywordIndexed : Boolean    属性にキーワードインデックスが存在すれば true です
.kind : Text    属性の種類を格納します
.mandatory : Boolean    属性において Null値の入力が拒否されている場合に true です
.name : Text    dataClassAttribute オブジェクトの名称を文字列として返します
.path : Text    リレーション属性を指し示すエイリアス属性のパスを返します
.readOnly : Boolean    読み取り専用属性の場合に trueです
.relatedDataClass : Text    属性にリレートされているデータクラスの名称を返します
.type : Text    属性の概念的な値タイプが格納されています
.unique : Boolean    属性値が重複不可の場合に true です

.autoFilled

履歴
バージョン内容
v17 R5追加

.autoFilled : Boolean

説明

.autoFilled プロパティは、 属性値が 4D によって自動生成される場合に true です。 このプロパティは以下の 4Dフィールドプロパティに対応しています:

  • 数値型フィールドの "自動インクリメント"
  • UUID (文字型)フィールドの "自動UUID"

.kind が "relatedEntity" または "relatedEntities" の場合には、このプロパティは返されません。

汎用的なプログラミングのために、.autoFilled が返されない場合でも Bool (dataClassAttribute.autoFilled) と書くことで、有効な値 (false) を受け取ることができます。

.exposed

履歴
バージョン内容
v19 R3追加

.exposed : Boolean

説明

.exposed プロパティは、 属性が REST で公開されている場合に trueです。

参照

DataClass.getInfo()

.fieldNumber

履歴
バージョン内容
v17 R5追加

.fieldNumber : Integer

説明

.fieldNumber プロパティは、 属性の内部的な 4Dフィールド番号を格納します。

.kind が "relatedEntity" または "relatedEntities" の場合には、このプロパティは返されません。

汎用的なプログラミングのために、.fieldNumber が返されない場合でも Num (dataClassAttribute.fieldNumber) と書くことで、有効な値 (0) を受け取ることができます。

.fieldType

履歴
バージョン内容
v19 R4エイリアス属性をサポート
v19 R3計算属性をサポート

.fieldType : Integer

説明

.fieldType プロパティは、 属性の 4Dデータベースタイプを格納します。 これは属性の種類 (kind) によります (.kind 参照)。

とりうる値:

dataClassAttribute.kindfieldType
storage4Dフィールドタイプに対応、Value type コマンド参照
relatedEntity38 (Is object)
relatedEntities42 (Is collection)
calculated
  • スカラー: 4Dフィールドタイプに対応、Value type コマンド参照
  • エンティティ: 38 (Is object)
  • エンティティセレクション: 42 (Is collection)
  • alias
  • スカラー: 4Dフィールドタイプに対応、Value type コマンド参照
  • エンティティ: 38 (Is object)
  • エンティティセレクション: 42 (Is collection)
  • 参照

    .type

    .indexed

    履歴
    バージョン内容
    v17 R5追加

    .indexed : Boolean

    説明

    .indexed プロパティは、 属性に対して B-tree もしくは クラスターB-Tree インデックスが設定されている場合に true です。

    .kind が "relatedEntity" または "relatedEntities" の場合には、このプロパティは返されません。

    汎用的なプログラミングのために、.indexed が返されない場合でも Bool (dataClassAttribute.indexed) と書くことで、有効な値 (false) を受け取ることができます。

    .inverseName

    履歴
    バージョン内容
    v17 R5追加

    .inverseName : Text

    説明

    .inverseName プロパティは、 リレーション先の属性名を格納します。

    .kind が "storage" の場合には、このプロパティは返されません。 .kind は "relatedEntity" または "relatedEntities" でなくてはなりません。

    汎用的なプログラミングのために、.inverseName が返されない場合でも String (dataClassAttribute.inverseName) と書くことで、有効な値 ("") を受け取ることができます。

    .keywordIndexed

    履歴
    バージョン内容
    v17 R5追加

    .keywordIndexed : Boolean

    説明

    .keywordIndexed プロパティは、 属性にキーワードインデックスが存在すれば true です。

    .kind が "relatedEntity" または "relatedEntities" の場合には、このプロパティは返されません。

    汎用的なプログラミングのために、.keywordIndexed が返されない場合でも Bool (dataClassAttribute.keywordIndexed) と書くことで、有効な値 (false) を受け取ることができます。

    .kind

    履歴
    バージョン内容
    v19 R4"alias" を追加
    v19 R3"calculated" を追加

    .kind : Text

    説明

    .kind プロパティは、 属性の種類を格納します。 以下のいずれかの値が返されます:

    • "storage": ストレージ (あるいはスカラー) 属性。つまり、属性は値を保存しており、他の属性への参照ではありません。
    • "calculated": 計算属性。get 関数 によって定義されます。
    • "alias": 他の属性 を指し示す属性。
    • "relatedEntity": N対1 リレーション属性 (エンティティへの参照)
    • "relatedEntities": 1対N リレーション属性 (エンティティセレクションへの参照)

    例題

    以下のテーブルとリレーションを前提とします:

     var $attKind : Text
    $attKind:=ds.Employee.lastname.kind //$attKind="storage"
    $attKind:=ds.Employee.manager.kind //$attKind="relatedEntity"
    $attKind:=ds.Employee.directReports.kind //$attKind="relatedEntities"

    .mandatory

    履歴
    バージョン内容
    v17 R5追加

    .mandatory : Boolean

    説明

    .mandatory プロパティは、 属性において Null値の入力が拒否されている場合に true です。

    .kind が "relatedEntity" または "relatedEntities" の場合には、このプロパティは返されません。

    汎用的なプログラミングのために、.mandatory が返されない場合でも Bool (dataClassAttribute.mandatory) と書くことで、有効な値 (false) を受け取ることができます。 警告: このプロパティは、4Dデータベースレベルの "Null値の入力を拒否" フィールドプロパティと対応しています。 フィールドのデータ入力制御オプションである既存の "必須入力" プロパティとは無関係です。

    .name

    履歴
    バージョン内容
    v17 R5追加

    .name : Text

    説明

    .name プロパティは、 dataClassAttribute オブジェクトの名称を文字列として返します。

    例題

     var $attName : Text
    $attName:=ds.Employee.lastname.name //$attName="lastname"

    .path

    履歴
    バージョン内容
    v19 R4追加

    .path : Text

    説明

    .path プロパティは、 リレーション属性を指し示すエイリアス属性のパスを返します。

    例題

     var $path : Text
    $path:=ds.Teacher.students.path // $path="courses.student"

    .readOnly

    履歴
    バージョン内容
    v19 R3追加

    .readOnly : Boolean

    説明

    .readOnly プロパティは、 読み取り専用属性の場合に trueです。

    たとえば、set 関数 を持たない計算属性は読み取り専用です。

    .relatedDataClass

    履歴
    バージョン内容
    v17 R5追加

    .relatedDataClass : Text

    説明

    このプロパティは、.kind プロパティ値が "relatedEntity" または "relatedEntities" である属性においてのみ利用可能です。

    .relatedDataClass プロパティは、 属性にリレートされているデータクラスの名称を返します。

    例題

    以下のテーブルとリレーションを前提とします:

     var $relClass1; $relClassN : Text
    $relClass1:=ds.Employee.employer.relatedDataClass //$relClass1="Company"
    $relClassN:=ds.Employee.directReports.relatedDataClass //$relClassN="Employee"

    .type

    履歴
    バージョン内容
    v19 R3計算属性をサポート

    .type : Text

    説明

    .type プロパティは、 属性の概念的な値タイプが格納されています。これは、汎用的なプログラミングに有用です

    この概念的な値タイプは属性の種類 (.kind) によります。

    とりうる値:

    dataClassAttribute.kindtype説明
    storage"blob", "bool", "date", "image", "number", "object", または "string"数値型の場合 "number" が返されます (時間を含む)。 UUID、文字およびテキスト型フィールドの場合 "string" が返されます。 "blob" 属性は BLOB オブジェクト で、Blob クラス によって扱われます。
    relatedEntityリレートされたデータクラス名例: "Companies"
    relatedEntitiesリレートされたデータクラス名 + "Selection"例: "EmployeeSelection"
    calculated
  • ストレージ: データ型 ("blob", "number", など)
  • エンティティ: データクラス名
  • エンティティセレクション: データクラス名 + "Selection"
  • 参照

    .fieldType

    .unique

    履歴
    バージョン内容
    v17 R5追加

    .unique : Boolean

    説明

    .unique プロパティは、 属性値が重複不可の場合に true です。 このプロパティは、4Dフィールドプロパティの "重複不可" に対応しています.

    .kind が "relatedEntity" または "relatedEntities" の場合には、このプロパティは返されません。

    汎用的なプログラミングのために、.unique が返されない場合でも Bool (dataClassAttribute.unique) と書くことで、有効な値 (false) を受け取ることができます。