Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

openByQuery の使用法

DBService クラスは 3 つのメソッドで openByQuery を使用します。

  • allContacts — データベース内の各 Contact インスタンスに対して、メモリ内で POJO インスタンスを開きます。

  • contactsByName — 指定された name 値を持つデータベース内の各 Contact インスタンスに対して、メモリ内で POJO インスタンスを開きます。

  • phonesByName — 指定された nameContact インスタンスと関連するデータベース内の各 PhoneNumber インスタンスに対して、メモリ内で POJO インスタンスを開きます。

allContacts のコードは以下のとおりです。


protected Iterator allContacts ()
 throws Exception
 {
    return objectManager.openByQuery (Contact.class, null, null);  
  }

contactsByName のコードは以下のとおりです。


public Contact contactsByName (String name) 
 throws Exception
{
    String query = "name = ? Order By name";
    Iterator it = objectManager.openByQuery (Contact.class, query, 
                                             new Object[]{name});
     if (it.hasNext ())
         return (Contact) it.next ();
      throw new Exception ("Contact not found.");
        
 }   

このように記述した openByQuery は、引数に完全なクエリではなく SQL 条件を取ります。Caché ドキュメントには、SQL 条件を規定する規則のリストがあります。このリストへのリンクは、下記のメモを参照してください。

phonesByName のコードは以下のとおりです。


  public Iterator phonesByName(String name)
  throws Exception
  {
      String query = "Select Distinct contacts.PhoneNumber.%ID," +
         " contacts.PhoneNumber.number, contacts.PhoneNumber.PhoneNumberType" + 
         " From contacts.phoneNumber Where contacts.phoneNumber.owner ->" +
         " name %Startswith ?";
      return objectManager.openByQuery(query, new Object[]{name});
                  
  }

このように記述した openByQuery は、引数に完全な SQL クエリを取ります。ドキュメントには、SQL クエリの内容を規定する規則のリストがあります。このリストへのリンクは、下記のメモを参照してください。

Note:

openByQuery に使用する SQL 条件と SQL クエリの規則については、"Caché Jalapeño での Java の使用法" の "Jalapeño ランタイム・ライブラリ・リファレンス" の "ObjectManager インタフェース" のセクションにある "openByQuery" エントリを参照してください。

FeedbackOpens in a new tab