tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From SK Leung <siukaile...@yahoo.com.hk>
Subject CMP Example with field mapping file
Date Tue, 13 May 2008 15:31:38 GMT

I have created a CMP with Tomcat 6.x+OpenEJB 3.x+OracleXE. When the program
is executed to create the object, the following error is shown.

Caused by: java.lang.Exception: <openjpa-1.0.1-r420667:592145 nonfatal
general e
rror> org.apache.openjpa.persistence.PersistenceException: Attempt to insert
nul
l into a non-nullable column: column: ID table: PRODUCTS in statement
[INSERT IN
TO PRODUCTS (productID, basePrice, description, name) VALUES (?, ?, ?, ?)]
{prep
stmnt 26620531 INSERT INTO PRODUCTS (productID, basePrice, description,
name) VA
LUES (?, ?, ?, ?) [params=(String) 123-456-7890, (double) 200.0, (String)
350 MH
z Pentium, (String) P5-300]} [code=-10, state=23000]
FailedObject: openejb.ejbuser.PRODUCTS@1a722ef

I think that there is a need to have a cmp field mapping to database column
configuration required but not sure. My ejb-jar.xml is as below.

<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns="http://java.sun.com/xml/ns/j2ee" version="2.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd">
	<display-name>Hello</display-name>
	<enterprise-beans>
		<entity>
			<ejb-name>ProductEJB</ejb-name>
			<home>ejbuser.ProductHome</home>
			<remote>ejbuser.Product</remote>
			<ejb-class>ejbuser.ProductEJB</ejb-class>
			<persistence-type>Container</persistence-type>
			<prim-key-class>java.lang.String</prim-key-class>
			<reentrant>false</reentrant>
			<cmp-version>2.x</cmp-version>
			<abstract-schema-name>PRODUCTS</abstract-schema-name>
			<cmp-field>
				<field-name>productID</field-name>
			</cmp-field>
			<cmp-field>
				<field-name>name</field-name>
			</cmp-field>
			<cmp-field>
				<field-name>description</field-name>
			</cmp-field>
			<cmp-field>
				<field-name>basePrice</field-name>
			</cmp-field>
			<primkey-field>productID</primkey-field>
			<query>
				<query-method>
					<method-name>findByName</method-name>
					<method-params>
						<method-param>java.lang.String</method-param>
					</method-params>
				</query-method>
				<ejb-ql>SELECT DISTINCT OBJECT(p) FROM PRODUCTS p WHERE p.name =
?1</ejb-ql>
			</query>
			<query>
				<query-method>
					<method-name>findByDescription</method-name>
					<method-params>
						<method-param>java.lang.String</method-param>
					</method-params>
				</query-method>
				<ejb-ql>SELECT DISTINCT OBJECT(p) FROM PRODUCTS p WHERE p.description =
?1</ejb-ql>
			</query>
			<query>
				<query-method>
					<method-name>findByBasePrice</method-name>
					<method-params>
						<method-param>double</method-param>
					</method-params>
				</query-method>
				<ejb-ql>SELECT DISTINCT OBJECT(p) FROM PRODUCTS p WHERE p.basePrice =
?1</ejb-ql>
			</query>
			<query>
				<query-method>
					<method-name>findByExpensiveProducts</method-name>
					<method-params>
						<method-param>double</method-param>
					</method-params>
				</query-method>
				<ejb-ql><![CDATA[SELECT DISTINCT OBJECT(p) FROM PRODUCTS p WHERE
p.basePrice > ?1]]></ejb-ql>
			</query>
			<query>
				<query-method>
					<method-name>findByCheapProducts</method-name>
					<method-params>
						<method-param>double</method-param>
					</method-params>
				</query-method>
				<ejb-ql><![CDATA[SELECT DISTINCT OBJECT(p) FROM PRODUCTS p WHERE
p.basePrice < ?1]]></ejb-ql>
			</query>
			<query>
				<query-method>
					<method-name>findAllProducts</method-name>
					<method-params></method-params>
				</query-method>
				<ejb-ql>SELECT DISTINCT OBJECT(p) FROM PRODUCTS p WHERE p.productID IS
NOT NULL</ejb-ql>
			</query>
			<resource-ref>
				<res-ref-name>jdbc/OracleCMTadmuser</res-ref-name>
				<res-type>javax.sql.DataSource</res-type>
				<res-auth>Container</res-auth>
				<res-sharing-scope>Sharable</res-sharing-scope>
			</resource-ref>
		</entity>
	</enterprise-beans>
	<assembly-descriptor>
		<container-transaction>
			<method>
				<ejb-name>ProductEJB</ejb-name>
				<method-intf>Remote</method-intf>
				<method-name>*</method-name>
			</method>
			<method>
				<ejb-name>ProductEJB</ejb-name>
				<method-intf>Home</method-intf>
				<method-name>*</method-name>
			</method>
			<trans-attribute>Required</trans-attribute>
		</container-transaction>
		<security-role>
			<description>Users</description>
			<role-name>users</role-name>
		</security-role>
	</assembly-descriptor>
</ejb-jar>

If a cmp mapping to database column file is required, what is the filename,
its locaton and the syntax? An example is much appreciated. Much thanks.

SK
-- 
View this message in context: http://www.nabble.com/CMP-Example-with-field-mapping-file-tp17211487p17211487.html
Sent from the OpenEJB User mailing list archive at Nabble.com.


Mime
View raw message