Interesting TopLink Mappings behavior
524805Aug 29 2006 — edited Aug 30 2006Hello,
I discovered an interesting TopLink Mappings behavior. Maybe I am doing something stupid, and someone can tell me how to do it right. It would be very nice.
I am about setting up a project where more than one person is working on, so I put it into CVS, to see what is going on.
But step by step.
I have set up a TopLink projevt in JDeveloper with the TopLink Mapping Workbench. Right now, I only want to use the query functions of TopLink, and for these I created some DB views. Because the views don't have any primary keys, I am using all of the foreign keys in the mapping, cause otherwise, I am not able to generate the deployment descriptor. Afterwards, I put the project into CVS, to see what is going on.
After I had done all this, I opened it with another user, from another PC, with a different JDeveloper. The result TopLink encounters is a nice looking screen in the Workbench with the following text on it:
There was a problem encountered loading the TopLink Mappings project: null
It happened a couple of times, I always tried to fix it by setting up the project new, but every time the same result.
After making a little research what is realy going on I discovered the following behavior:
CVS tells me, that the file on my disk looks like this:
<?xml version = '1.0' encoding = 'UTF-8'?>
<project>
<project-name>toplink_mappings</project-name>
<login>
<database-login>
<platform>oracle.toplink.oraclespecific.Oracle9Platform</platform>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<connection-url>jdbc:oracle:thin:@ZPTLDV2:1531:MPPDBDEV</connection-url>
<user-name>fmb_user</user-name>
<password>8B66EF2A66D659E35EA15CFCA8DDFDE9</password>
<uses-native-sequencing>false</uses-native-sequencing>
<sequence-preallocation-size>50</sequence-preallocation-size>
<sequence-table>SEQUENCE</sequence-table>
<sequence-name-field>SEQ_NAME</sequence-name-field>
<sequence-counter-field>SEQ_COUNT</sequence-counter-field>
<should-bind-all-parameters>false</should-bind-all-parameters>
<should-cache-all-statements>false</should-cache-all-statements>
<uses-byte-array-binding>true</uses-byte-array-binding>
<uses-string-binding>false</uses-string-binding>
<uses-streams-for-binding>false</uses-streams-for-binding>
<should-force-field-names-to-upper-case>false</should-force-field-names-to-upper-case>
<should-optimize-data-conversion>true</should-optimize-data-conversion>
<should-trim-strings>true</should-trim-strings>
<uses-batch-writing>false</uses-batch-writing>
<uses-jdbc-batch-writing>true</uses-jdbc-batch-writing>
<uses-external-connection-pooling>false</uses-external-connection-pooling>
<uses-external-transaction-controller>false</uses-external-transaction-controller>
<type>oracle.toplink.sessions.DatabaseLogin</type>
</database-login>
</login>
</project>
In former times it looked like
<?xml version = '1.0' encoding = 'UTF-8'?>
<project>
<project-name>toplink_mappings</project-name>
<login>
<database-login>
<platform>oracle.toplink.oraclespecific.Oracle9Platform</platform>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<connection-url>jdbc:oracle:thin:@ZPTLDV2:1531:MPPDBDEV</connection-url>
<user-name>fmb_user</user-name>
<password>8B66EF2A66D659E35EA15CFCA8DDFDE9</password>
<uses-native-sequencing>false</uses-native-sequencing>
<sequence-preallocation-size>50</sequence-preallocation-size>
<sequence-table>SEQUENCE</sequence-table>
<sequence-name-field>SEQ_NAME</sequence-name-field>
<sequence-counter-field>SEQ_COUNT</sequence-counter-field>
<should-bind-all-parameters>false</should-bind-all-parameters>
<should-cache-all-statements>false</should-cache-all-statements>
<uses-byte-array-binding>true</uses-byte-array-binding>
<uses-string-binding>false</uses-string-binding>
<uses-streams-for-binding>false</uses-streams-for-binding>
<should-force-field-names-to-upper-case>false</should-force-field-names-to-upper-case>
<should-optimize-data-conversion>true</should-optimize-data-conversion>
<should-trim-strings>true</should-trim-strings>
<uses-batch-writing>false</uses-batch-writing>
<uses-jdbc-batch-writing>true</uses-jdbc-batch-writing>
<uses-external-connection-pooling>false</uses-external-connection-pooling>
<uses-external-transaction-controller>false</uses-external-transaction-controller>
<type>oracle.toplink.sessions.DatabaseLogin</type>
</database-login>
</login>
<descriptors>
<descriptor>
<java-class>freddie.model.FmbResultsV</java-class>
<tables>
<table>MPP_OWNER.FMB_RESULTS_V</table>
</tables>
<primary-key-fields>
<field>MPP_OWNER.FMB_RESULTS_V.AREA_ID</field>
<field>MPP_OWNER.FMB_RESULTS_V.CAT_ID</field>
<field>MPP_OWNER.FMB_RESULTS_V.GRP_ID</field>
<field>MPP_OWNER.FMB_RESULTS_V.CAT_MASTER_ID</field>
</primary-key-fields>
<descriptor-type-value>Normal</descriptor-type-value>
<identity-map-class>oracle.toplink.internal.identitymaps.SoftCacheWeakIdentityMap</identity-map-class>
<remote-identity-map-class>oracle.toplink.internal.identitymaps.SoftCacheWeakIdentityMap</remote-identity-map-class>
<identity-map-size>100</identity-map-size>
<remote-identity-map-size>100</remote-identity-map-size>
<should-always-refresh-cache>false</should-always-refresh-cache>
<should-always-refresh-cache-on-remote>false</should-always-refresh-cache-on-remote>
<should-only-refresh-cache-if-newer-version>false</should-only-refresh-cache-if-newer-version>
<should-disable-cache-hits>false</should-disable-cache-hits>
<should-disable-cache-hits-on-remote>false</should-disable-cache-hits-on-remote>
<descriptor-is-read-only>true</descriptor-is-read-only>
<alias>FmbResultsV</alias>
<copy-policy>
<descriptor-copy-policy>
<type>oracle.toplink.internal.descriptors.CopyPolicy</type>
</descriptor-copy-policy>
</copy-policy>
<instantiation-policy>
<descriptor-instantiation-policy>
<type>oracle.toplink.internal.descriptors.InstantiationPolicy</type>
</descriptor-instantiation-policy>
</instantiation-policy>
<query-manager>
<descriptor-query-manager>
<existence-check>Check cache</existence-check>
<descriptor-named-queries>
<database-query>
<query-name>readAll_SQL</query-name>
<query-should-maintain-cache>true</query-should-maintain-cache>
<cascade-policy>1</cascade-policy>
<should-bind-all-parameters>undefined</should-bind-all-parameters>
<should-cache-statement>undefined</should-cache-statement>
<should-use-wrapper-policy>true</should-use-wrapper-policy>
<query-timeout>0</query-timeout>
<sql-string>SELECT * FROM fmb_results_v</sql-string>
<reference-class>freddie.model.FmbResultsV</reference-class>
<refresh-identity-map>false</refresh-identity-map>
<cache-usage>2</cache-usage>
<lock-mode>0</lock-mode>
<distinct-state>0</distinct-state>
<query-indirection>
<in-memory-query-indirection>
<policy>0</policy>
</in-memory-query-indirection>
</query-indirection>
<type>oracle.toplink.queryframework.ReadAllQuery</type>
</database-query>
</descriptor-named-queries>
</descriptor-query-manager>
</query-manager>
<event-manager>
<descriptor-event-manager empty-aggregate="true"/>
</event-manager>
<mappings>
<database-mapping>
<attribute-name>areaId</attribute-name>
<read-only>false</read-only>
<field-name>MPP_OWNER.FMB_RESULTS_V.AREA_ID</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>
<database-mapping>
<attribute-name>areaName</attribute-name>
<read-only>false</read-only>
<field-name>MPP_OWNER.FMB_RESULTS_V.AREA_NAME</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>
<database-mapping>
<attribute-name>categoryName</attribute-name>
<read-only>false</read-only>
<field-name>MPP_OWNER.FMB_RESULTS_V.CATEGORY_NAME</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>
<database-mapping>
<attribute-name>catId</attribute-name>
<read-only>false</read-only>
<field-name>MPP_OWNER.FMB_RESULTS_V.CAT_ID</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>
<database-mapping>
<attribute-name>catMasterId</attribute-name>
<read-only>false</read-only>
<field-name>MPP_OWNER.FMB_RESULTS_V.CAT_MASTER_ID</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>
<database-mapping>
<attribute-name>catParamGroup</attribute-name>
<read-only>false</read-only>
<field-name>MPP_OWNER.FMB_RESULTS_V.CAT_PARAM_GROUP</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>
<database-mapping>
<attribute-name>catParamResult</attribute-name>
<read-only>false</read-only>
<field-name>MPP_OWNER.FMB_RESULTS_V.CAT_PARAM_RESULT</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>
<database-mapping>
<attribute-name>catParamValue</attribute-name>
<read-only>false</read-only>
<field-name>MPP_OWNER.FMB_RESULTS_V.CAT_PARAM_VALUE</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>
<database-mapping>
<attribute-name>facility</attribute-name>
<read-only>false</read-only>
<field-name>MPP_OWNER.FMB_RESULTS_V.FACILITY</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>
<database-mapping>
<attribute-name>groupName</attribute-name>
<read-only>false</read-only>
<field-name>MPP_OWNER.FMB_RESULTS_V.GROUP_NAME</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>
<database-mapping>
<attribute-name>grpId</attribute-name>
<read-only>false</read-only>
<field-name>MPP_OWNER.FMB_RESULTS_V.GRP_ID</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>
<database-mapping>
<attribute-name>sortCmId</attribute-name>
<read-only>false</read-only>
<field-name>MPP_OWNER.FMB_RESULTS_V.SORT_CM_ID</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>
<database-mapping>
<attribute-name>sortScId</attribute-name>
<read-only>false</read-only>
<field-name>MPP_OWNER.FMB_RESULTS_V.SORT_SC_ID</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>
<database-mapping>
<attribute-name>statusId</attribute-name>
<read-only>false</read-only>
<field-name>MPP_OWNER.FMB_RESULTS_V.STATUS_ID</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>
<database-mapping>
<attribute-name>subCatId</attribute-name>
<read-only>false</read-only>
<field-name>MPP_OWNER.FMB_RESULTS_V.SUB_CAT_ID</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>
<database-mapping>
<attribute-name>subCatName</attribute-name>
<read-only>false</read-only>
<field-name>MPP_OWNER.FMB_RESULTS_V.SUB_CAT_NAME</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>
</mappings>
<type>oracle.toplink.publicinterface.Descriptor</type>
</descriptor>
</descriptors>
</project>
That means it looks like the whole mapping part is deleted, by opening it a second time. But the more interesting point I discovered afterwards is, that the file, that should not have the descriptor part on the disc looks on the disc if I open it with an editor like this:
<?xml version = '1.0' encoding = 'UTF-8'?>
<project>
<project-name>toplink_mappings</project-name>
<login>
<database-login>
<platform>oracle.toplink.oraclespecific.Oracle9Platform</platform>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<connection-url>jdbc:oracle:thin:@ZPTLDV2:1531:MPPDBDEV</connection-url>
<user-name>fmb_user</user-name>
<password>8B66EF2A66D659E35EA15CFCA8DDFDE9</password>
<uses-native-sequencing>false</uses-native-sequencing>
<sequence-preallocation-size>50</sequence-preallocation-size>
<sequence-table>SEQUENCE</sequence-table>
<sequence-name-field>SEQ_NAME</sequence-name-field>
<sequence-counter-field>SEQ_COUNT</sequence-counter-field>
<should-bind-all-parameters>false</should-bind-all-parameters>
<should-cache-all-statements>false</should-cache-all-statements>
<uses-byte-array-binding>true</uses-byte-array-binding>
<uses-string-binding>false</uses-string-binding>
<uses-streams-for-binding>false</uses-streams-for-binding>
<should-force-field-names-to-upper-case>false</should-force-field-names-to-upper-case>
<should-optimize-data-conversion>true</should-optimize-data-conversion>
<should-trim-strings>true</should-trim-strings>
<uses-batch-writing>false</uses-batch-writing>
<uses-jdbc-batch-writing>true</uses-jdbc-batch-writing>
<uses-external-connection-pooling>false</uses-external-connection-pooling>
<uses-external-transaction-controller>false</uses-external-transaction-controller>
<type>oracle.toplink.sessions.DatabaseLogin</type>
</database-login>
</login>
<descriptors>
<descriptor>
<java-class>freddie.model.FmbResultsV</java-class>
<tables>
<table>MPP_OWNER.FMB_RESULTS_V</table>
</tables>
<primary-key-fields>
<field>MPP_OWNER.FMB_RESULTS_V.AREA_ID</field>
<field>MPP_OWNER.FMB_RESULTS_V.CAT_ID</field>
<field>MPP_OWNER.FMB_RESULTS_V.GRP_ID</field>
<field>MPP_OWNER.FMB_RESULTS_V.CAT_MASTER_ID</field>
</primary-key-fields>
<descriptor-type-value>Normal</descriptor-type-value>
<identity-map-class>oracle.toplink.internal.identitymaps.SoftCacheWeakIdentityMap</identity-map-class>
<remote-identity-map-class>oracle.toplink.internal.identitymaps.SoftCacheWeakIdentityMap</remote-identity-map-class>
<identity-map-size>100</identity-map-size>
<remote-identity-map-size>100</remote-identity-map-size>
<should-always-refresh-cache>false</should-always-refresh-cache>
<should-always-refresh-cache-on-remote>false</should-always-refresh-cache-on-remote>
<should-only-refresh-cache-if-newer-version>false</should-only-refresh-cache-if-newer-version>
<should-disable-cache-hits>false</should-disable-cache-hits>
<should-disable-cache-hits-on-remote>false</should-disable-cache-hits-on-remote>
<descriptor-is-read-only>true</descriptor-is-read-only>
<alias>FmbResultsV</alias>
<copy-policy>
<descriptor-copy-policy>
<type>oracle.toplink.internal.descriptors.CopyPolicy</type>
</descriptor-copy-policy>
</copy-policy>
<instantiation-policy>
<descriptor-instantiation-policy>
<type>oracle.toplink.internal.descriptors.InstantiationPolicy</type>
</descriptor-instantiation-policy>
</instantiation-policy>
<query-manager>
<descriptor-query-manager>
<existence-check>Check cache</existence-check>
<descriptor-named-queries>
<database-query>
<query-name>readAll_SQL</query-name>
<query-should-maintain-cache>true</query-should-maintain-cache>
<cascade-policy>1</cascade-policy>
<should-bind-all-parameters>undefined</should-bind-all-parameters>
<should-cache-statement>undefined</should-cache-statement>
<should-use-wrapper-policy>true</should-use-wrapper-policy>
<query-timeout>0</query-timeout>
<sql-string>SELECT * FROM fmb_results_v</sql-string>
<reference-class>freddie.model.FmbResultsV</reference-class>
<refresh-identity-map>false</refresh-identity-map>
<cache-usage>2</cache-usage>
<lock-mode>0</lock-mode>
<distinct-state>0</distinct-state>
<query-indirection>
<in-memory-query-indirection>
<policy>0</policy>
</in-memory-query-indirection>
</query-indirection>
<type>oracle.toplink.queryframework.ReadAllQuery</type>
</database-query>
</descriptor-named-queries>
</descriptor-query-manager>
</query-manager>
<event-manager>
<descriptor-event-manager empty-aggregate="true"/>
</event-manager>
<mappings>
<database-mapping>
<attribute-name>areaId</attribute-name>
<read-only>false</read-only>
<field-name>MPP_OWNER.FMB_RESULTS_V.AREA_ID</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>
<database-mapping>
<attribute-name>areaName</attribute-name>
<read-only>false</read-only>
<field-name>MPP_OWNER.FMB_RESULTS_V.AREA_NAME</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>
<database-mapping>
<attribute-name>categoryName</attribute-name>
<read-only>false</read-only>
<field-name>MPP_OWNER.FMB_RESULTS_V.CATEGORY_NAME</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>
<database-mapping>
<attribute-name>catId</attribute-name>
<read-only>false</read-only>
<field-name>MPP_OWNER.FMB_RESULTS_V.CAT_ID</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>
<database-mapping>
<attribute-name>catMasterId</attribute-name>
<read-only>false</read-only>
<field-name>MPP_OWNER.FMB_RESULTS_V.CAT_MASTER_ID</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>
<database-mapping>
<attribute-name>catParamGroup</attribute-name>
<read-only>false</read-only>
<field-name>MPP_OWNER.FMB_RESULTS_V.CAT_PARAM_GROUP</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>
<database-mapping>
<attribute-name>catParamResult</attribute-name>
<read-only>false</read-only>
<field-name>MPP_OWNER.FMB_RESULTS_V.CAT_PARAM_RESULT</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>
<database-mapping>
<attribute-name>catParamValue</attribute-name>
<read-only>false</read-only>
<field-name>MPP_OWNER.FMB_RESULTS_V.CAT_PARAM_VALUE</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>
<database-mapping>
<attribute-name>facility</attribute-name>
<read-only>false</read-only>
<field-name>MPP_OWNER.FMB_RESULTS_V.FACILITY</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>
<database-mapping>
<attribute-name>groupName</attribute-name>
<read-only>false</read-only>
<field-name>MPP_OWNER.FMB_RESULTS_V.GROUP_NAME</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>
<database-mapping>
<attribute-name>grpId</attribute-name>
<read-only>false</read-only>
<field-name>MPP_OWNER.FMB_RESULTS_V.GRP_ID</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>
<database-mapping>
<attribute-name>sortCmId</attribute-name>
<read-only>false</read-only>
<field-name>MPP_OWNER.FMB_RESULTS_V.SORT_CM_ID</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>
<database-mapping>
<attribute-name>sortScId</attribute-name>
<read-only>false</read-only>
<field-name>MPP_OWNER.FMB_RESULTS_V.SORT_SC_ID</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>
<database-mapping>
<attribute-name>statusId</attribute-name>
<read-only>false</read-only>
<field-name>MPP_OWNER.FMB_RESULTS_V.STATUS_ID</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>
<database-mapping>
<attribute-name>subCatId</attribute-name>
<read-only>false</read-only>
<field-name>MPP_OWNER.FMB_RESULTS_V.SUB_CAT_ID</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>
<database-mapping>
<attribute-name>subCatName</attribute-name>
<read-only>false</read-only>
<field-name>MPP_OWNER.FMB_RESULTS_V.SUB_CAT_NAME</field-name>
<type>oracle.toplink.mappings.DirectToFieldMapping</type>
</database-mapping>
</mappings>
<type>oracle.toplink.publicinterface.Descriptor</type>
</descriptor>
</descriptors>
</project>
Hopefully someone can help me with this behavior, I have no idea any more, how to fix that problem.
Thanks,
Chriss