CMP field for key not found (CMR,JBossRC1,XDoclet)
resmai Apr 24, 2002 5:18 AMI have a problem which i can't cope with.
0RC1_tomcat-4.0.3/server/default/deploy/CommonAttribute.jar/96.CommonAttribute.jar!/META-INF/jbosscmp-jdbc.xml found. Overriding defaults
10:47:59,747 ERROR [EntityContainer] Exception in service lifecyle operation: create
org.jboss.deployment.DeploymentException: CMP field for key not found: field name=id
at org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCRelationshipRoleMetaData.loadKeyFields(JDBCRelationshipRoleMetaData.java:374)
at org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCRelationshipRoleMetaData.init(JDBCRelationshipRoleMetaData.java:157)
at org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCRelationMetaData.(JDBCRelationMetaData.java:309)
at org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCApplicationMetaData.(JDBCApplicationMetaData.java:383)
at org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCXmlFileLoader.load(JDBCXmlFileLoader.java:75)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.loadJDBCEntityMetaData(JDBCStoreManager.java:595)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.create(JDBCStoreManager.java:322)
at org.jboss.ejb.plugins.CMPPersistenceManager.create(CMPPersistenceManager.java:155)
at org.jboss.ejb.EntityContainer.create(EntityContainer.java:337)
at org.jboss.ejb.Container.invoke(Container.java:790)
at org.jboss.ejb.EntityContainer.invoke(EntityContainer.java:1055)
...
My jbosscmp-jdbc.xml:
<jbosscmp-jdbc>
java:/OracleDS
<datasource-mapping>Oracle8</datasource-mapping>
<enterprise-beans>
<ejb-name>attribute/Attribute</ejb-name>
<create-table>false</create-table>
<remove-table>false</remove-table>
<table-name>ATTRIBUTE</table-name>
<cmp-field>
<field-name>id</field-name>
<column-name>ID</column-name>
<jdbc-type>BIGINT</jdbc-type>
<sql-type>NUMBER(19)</sql-type>
...
<ejb-name>attribute/StringAttribute</ejb-name>
<create-table>false</create-table>
<remove-table>false</remove-table>
<table-name>ATTRIBUTE_VAL_STRING</table-name>
<cmp-field>
<field-name>id</field-name>
<column-name>ID</column-name>
<jdbc-type>BIGINT</jdbc-type>
<sql-type>NUMBER(19)</sql-type>
...
</enterprise-beans>
<ejb-relation>
<ejb-relation-name>link_to_identifier</ejb-relation-name>
<foreign-key-mapping/>
<ejb-relationship-role>
<ejb-relationship-role-name>link_to_identifier_FK_role</ejb-relationship-role-name>
<fk-constraint>false</fk-constraint>
<key-fields/>
</ejb-relationship-role>
<ejb-relationship-role>
<ejb-relationship-role-name>link_to_identifier_PK_role</ejb-relationship-role-name>
<key-fields>
<key-field>
<field-name>id</field-name>
<column-name></column-name>
</key-field>
</key-fields>
</ejb-relationship-role>
</ejb-relation>
...
</jbosscmp-jdbc>
My ejb-jar.xml:
...
<enterprise-beans>
...
<display-name>Attribute</display-name>
<ejb-name>attribute/Attribute</ejb-name>
...
<persistence-type>Container</persistence-type>
false
<cmp-version>2.x</cmp-version>
<abstract-schema-name>Attribute</abstract-schema-name>
<cmp-field >
<![CDATA[Get ID]]>
<field-name>id</field-name>
</cmp-field>
...
<display-name>StringAttribute</display-name>
<ejb-name>attribute/StringAttribute</ejb-name>
...
<cmp-field >
<![CDATA[Get ID]]>
<field-name>id</field-name>
</cmp-field>
...
</enterprise-beans>
...
<!-- Relationships -->
<ejb-relation >
<ejb-relation-name>link_to_identifier</ejb-relation-name>
<!-- unidirectional -->
<ejb-relationship-role >
<ejb-relationship-role-name>link_to_identifier_FK_role</ejb-relationship-role-name>
One
<relationship-role-source >
<ejb-name>attribute/StringAttribute</ejb-name>
</relationship-role-source>
<cmr-field >
<cmr-field-name>id</cmr-field-name>
</cmr-field> </ejb-relationship-role>
<ejb-relationship-role >
<ejb-relationship-role-name>link_to_identifier_PK_role</ejb-relationship-role-name>
One
<relationship-role-source >
<ejb-name>attribute/Attribute</ejb-name>
</relationship-role-source>
</ejb-relationship-role>
</ejb-relation>
...
Database tables looks like:
TABLE ATTRIBUTE
(
ID NUMBER(19,0) NOT NULL,
ATT_PRODID NUMBER(19,0) NULL,
ATT_KEY VARCHAR2(255) NULL,
ATT_MEASURE VARCHAR2(255) NULL,
PRIMARY KEY (ID),
CHECK ("ID" IS NOT NULL)
);
TABLE ATTRIBUTE_VAL_STRING
(
ID NUMBER(19,0) NOT NULL,
VAL_STRING VARCHAR2(255) NULL,
PRIMARY KEY (ID),
CHECK ("ID" IS NOT NULL)
);
All files were generated with XDoclet1.1.2
Unfortunately I did not found any suitable solution for my problem.
I hope you can help me.
H.A.N.D.