[英]Foreign Key Lookup in WaveMaker 6.7
我目前正在為工作中的項目評估WaveMaker,並且在執行外鍵查找時遇到麻煩。 我正在運行WaveMaker 6.7並連接到Oracle Database 10g實例。
我的項目涉及設計一個非常簡單的“項目批准”屏幕。 在WaveMaker的實現中,它應該由與RequestApproval表關聯的DojoGrid和與表中所選元素關聯的LiveForm組成,以對該元素提供CRUD操作。
RequestApproval表中的每一行代表一個項目中的任務。 該表包括可空的StaffAssigned列,該列指示將哪個工作人員分配給任務。 為了驗證新條目並保持數據完整性,StaffAssigned列是Respinit表的外鍵,該表的主鍵定義了所有工作人員。 外鍵在數據庫中定義,並且在導入時,WaveMaker為其分配基數為“零或一”(因為我認為StaffAssigned列為可空)。
我的問題是,由於Hibernate具有對關系的映射,WaveMaker現在不應該為我提供所有便利。 只要在StaffAssigned列上定義了該外鍵,該列就不會出現在DojoGrid中。 Respinit表中的任何關聯列都不會在DojoGrid的“編輯列”對話框中顯示為可選。 (也許這是因為StaffAssigned為null時WaveMaker不知道要顯示什么?)默認情況下,LiveForm中沒有出現Lookup編輯器,但是當我從Pallete拖動一個時,新的編輯器會自動與外鍵關聯,並且會當我運行我的應用程序時,將自動使用Respinit表中的值進行填充。
這是Hibernate中RequestApproval表的定義:
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.db105ddb.data.RequestApproval" table="REQUEST_APPROVAL" schema="VRT" dynamic-insert="false" dynamic-update="false">
<id name="requestApprovalId" type="integer">
<column name="REQUEST_APPROVAL_ID" precision="9"/>
<generator class="assigned"/>
</id>
<property name="REQUESTNUM" type="integer">
<column name="REQUESTNUM" precision="8" not-null="true"/>
</property>
<property name="taskDescription" type="string">
<column name="TASK_DESCRIPTION" length="2000"/>
</property>
<property name="whoRequestedApproval" type="string">
<column name="WHO_REQUESTED_APPROVAL" length="6"/>
</property>
<property name="dateRequested" type="date">
<column name="DATE_REQUESTED" length="7"/>
</property>
<property name="dateApproved" type="date">
<column name="DATE_APPROVED" length="7"/>
</property>
<property name="WHO_APPROVED" type="string">
<column name="WHO_APPROVED" length="6"/>
</property>
<many-to-one name="respinitByStaffAssigned" class="com.db105ddb.data.Respinit" cascade="none">
<column name="STAFF_ASSIGNED" length="6"/>
</many-to-one>
</class>
</hibernate-mapping>
這是Respinit表的定義:
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.db105ddb.data.Respinit" table="RESPINIT" schema="VRT" dynamic-insert="false" dynamic-update="false">
<id name="respinit" type="string">
<column name="RESPINIT" length="6"/>
<generator class="assigned"/>
</id>
<property name="rname" type="string">
<column name="RNAME" length="40"/>
</property>
<property name="rnameaddr" type="string">
<column name="RNAMEADDR" length="40"/>
</property>
<property name="raddr1" type="string">
<column name="RADDR1" length="40"/>
</property>
<property name="raddr2" type="string">
<column name="RADDR2" length="40"/>
</property>
<property name="rcity" type="string">
<column name="RCITY" length="40"/>
</property>
<property name="rstate" type="string">
<column name="RSTATE" length="20"/>
</property>
<property name="rzip" type="string">
<column name="RZIP" length="20"/>
</property>
<property name="homephone" type="string">
<column name="HOMEPHONE" length="20"/>
</property>
<property name="extension" type="string">
<column name="EXTENSION" length="5"/>
</property>
<property name="department" type="string">
<column name="DEPARTMENT" length="20"/>
</property>
<property name="cgroup" type="string">
<column name="CGROUP" length="10"/>
</property>
<property name="emailaddress" type="string">
<column name="EMAILADDRESS" length="1024"/>
</property>
<set name="requestApprovalsForStaffAssigned" inverse="true" cascade="">
<key>
<column name="STAFF_ASSIGNED" length="6"/>
</key>
<one-to-many class="com.db105ddb.data.RequestApproval"/>
</set>
</class>
</hibernate-mapping>
我真的希望我的StaffAssigned列顯示在我的DojoGrid中,但我不確定為什么沒有。 我對Wavemaker所做的其他外鍵查找按預期工作。 誰能說出我在配置中做錯了什么嗎? 我的方法在某種程度上是非標准的嗎? 任何幫助將不勝感激,我將很樂意根據要求提供任何其他信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.