針對樂觀存取目的而在述語中加入屬性

如果是 EJB 2.x CMP Entity Bean 的屬性,對映編輯器的「內容」視圖會加入樂觀述語的內容。

如果您有樂觀存取目的設定(wsOptimisticUpdatewsOptimisticRead),必須指定您希望加到述語中的屬性。如果屬性被設為 true,則該屬性會加到 Bean 的 UPDATE SQL 陳述式的 WHERE 述語中。依預設,對映編輯器會將每一個屬性設為 false,不過屬於初始類型的屬性除外,它們是設為 true。

  1. 針對您的 EJB 應用程式開啟對映編輯器。
  2. 在對映編輯器的「概觀」區段中,選取您針對樂觀存取目的而加到述語中的 Bean 屬性。
  3. 在「內容」視圖中,將 OptimisticPredicate 值設為 true。
註:
  • 在 5.0 版以前的 WebSphere® Studio Application Developer,不支援將 EJB 1.1 CMP Entity Bean 的屬性,加到樂觀述語中。不過,如果您是使用工作台來部署您以 5.0 之前的版本所開發的 EJB 應用程式,而且其中不含樂觀述語的屬性清單,則會使用所有可用的述語。不過 EJB 2.x CMP Entity Bean 就不一樣了。如果沒有選取任何屬性作為述語,就不會在過度限定的更新中加入任何屬性。

  • WebSphere Application Server Toolkit 6.0.1 之前的版本(或是 IBM Rational Software Development Platform 6.0.0.1 之前的版本),不支援樂觀述語中,對映到可接受空值之直欄的屬性。不過,本版或更新版的產品,已經放寬這項限制了:
    以 DB2 Universal Database for z/OS 和 OS/390、第 8 版以及更新版來說,如果樂觀述語欄可為 NULL,則得出的 UPDATE 查詢會採用 "IS NOT DISTINCT FROM" 架構。比方說,如果 ID 是主鍵直欄,而 NAME 可為 NULL,則得出的 UPDATE 查詢為:
    UPDATE SET NAME = ? WHERE ID = ? AND NAME IS NOT DISTINCT FROM ?
    這個新的 IS NOT DISTINCT FROM 語法,可以解除 JDBC 和 SQLJ 的 DB2 Universal Database for z/OS 和 OS/390 第 8 版和更新版中,對空值述語的限制。

    其他所有的後端資料庫供應商都可以啟用該 Bean 的局部更新,來使用具有可空值述語直欄的 Bean(針對該局部作業選取 UPDATE_ONLY 值)。只有 JDBC 才支援局部更新。而 SQLJ 仍然保留對空值述語的限制。如需有關將局部作業作為持續性選項的詳細資訊,請參閱下列兩個主題:儲存器管理持續性的局部作業新增 Entity Bean 2.x 的 Bean 層次存取目的

使用條款 | 讀者意見
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.