Simple CMP 2.0 Bean will not work please help.

P

Phoenix Silver

Hi

I have a very simple CMP 2.0 bean where the finder method will not
parse and I almost 100% correct. I will post all of the relevant code
and the exepction if anyone can help that would be great.

Platform
----------
JBoss 4.0.1
Win2000 Pro
IDE Eclipse
Postgres 7.4

---------------------------------------------------------------------------------------------------------------------------------------------
Member table
create table members
(
member_id integer primary key default nextval('seq_uid'),
member_number varchar(50),
access_authorization_id integer,
last_name varchar(50),
first_name varchar(50),
middle_initial varchar(50),
company_name varchar(50),
email varchar(50),
created_by varchar(50),
created_datetime timestamp,
modified_by varchar(50),
modified_datetime timestamp,
active_ind boolean,
valid_ind boolean
);

------------------------------------------------------------------------------------------------------------------------------------------------------------------
jbosscmp-jdbc.xml
-----------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jbosscmp-jdbc PUBLIC "-//JBoss//DTD JBOSSCMP-JDBC 4.0//EN"
"http://www.jboss.org/j2ee/dtd/jbosscmp-jdbc_4_0.dtd">

<jbosscmp-jdbc>
<defaults>
<datasource>java:/jdbc/PostgresSS</datasource>
<datasource-mapping>PostgreSQL 7.2</datasource-mapping>
<create-table>false</create-table>
<remove-table>false</remove-table>
</defaults>

<enterprise-beans>
<entity>
<ejb-name>Member</ejb-name>
<table-name>members</table-name>

<cmp-field>
<field-name>memberId</field-name>
<column-name>member_id</column-name>
</cmp-field>
<cmp-field>
<field-name>memberNumber</field-name>
<column-name>member_number</column-name>
</cmp-field>
<cmp-field>
<field-name>lastName</field-name>
<column-name>last_name</column-name>
</cmp-field>
<cmp-field>
<field-name>firstName</field-name>
<column-name>first_name</column-name>
</cmp-field>

<!-- jboss 3.2 features -->
<!-- optimistic locking does not express the exclusions needed -->
</entity>

</enterprise-beans>

</jbosscmp-jdbc>
------------------------------------------------------------------------------------------------------------------------------------------------

ejb-jar.xml
------------------------------------------------------
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise
JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">

<ejb-jar >

<description><![CDATA[No Description.]]></description>
<display-name>Generated by XDoclet</display-name>

<enterprise-beans>

<!-- Entity Beans -->
<entity >
<description><![CDATA[Description for Member]]></description>
<display-name>Name for Member</display-name>

<ejb-name>Member</ejb-name>

<local-home>com.ufa.petro.ss.services.member.MemberLocalHome</local-home>
<local>com.ufa.petro.ss.services.member.MemberLocal</local>

<ejb-class>com.ufa.petro.ss.services.member.MemberBean</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>java.lang.Integer</prim-key-class>
<reentrant>False</reentrant>
<cmp-version>2.x</cmp-version>
<abstract-schema-name>Members</abstract-schema-name>

<cmp-field>
<field-name>memberId</field-name>
</cmp-field>
<cmp-field>
<field-name>memberNumber</field-name>
</cmp-field>
<cmp-field>
<field-name>lastName</field-name>
</cmp-field>
<cmp-field>
<field-name>firstName</field-name>
</cmp-field>

<query>
<query-method>
<method-name>findByLastName</method-name>
<method-params>

<method-param>java.lang.String</method-param>
</method-params>
</query-method>
<ejb-ql>
<![CDATA[ SELECT OBJECT(o) FROM Members AS o
WHERE o.lastName = ?1 ]]>
</ejb-ql>
</query>
<!-- Write a file named ejb-finders-MemberBean.xml if you want
to define extra finders. -->
</entity>

</enterprise-beans>

<!-- Relationships -->

<!-- Assembly Descriptor -->
<assembly-descriptor >

<!-- finder permissions -->

<!-- transactions -->

<!-- finder transactions -->
</assembly-descriptor>

</ejb-jar>

--------------------------------------------------------------------------------------------------------------------------------------------------

MemberLocal.java
--------------------
package com.ufa.petro.ss.services.member;

/**
* Local interface for Member.
*/
public interface MemberLocal
extends javax.ejb.EJBLocalObject
{
String getFirstName();
String getLastName();
}

-----------------------------------------------------------------------------------------------------------------------------------------
MemberLocalHome.java
-----------------------------
package com.ufa.petro.ss.services.member;

import java.util.Collection;

/**
* Local home interface for Member.
*/
public interface MemberLocalHome
extends javax.ejb.EJBLocalHome
{
public static final String
COMP_NAME="java:comp/env/ejb/MemberLocal";
public static final String JNDI_NAME="MemberLocal";

public Collection findByLastName(String i) throws
javax.ejb.FinderException;

public MemberLocal findByPrimaryKey(Integer id) throws
javax.ejb.FinderException;

}
-------------------------------------------------------------------------------------------------------------------------------------------
MemberBean.java
------------------------

public abstract class MemberBean implements EntityBean {

public MemberBean() {
super();
// TODO Auto-generated constructor stub
}

public void setEntityContext(EntityContext ctx)
throws EJBException,
RemoteException {
// TODO Auto-generated method stub

}

public void unsetEntityContext() throws EJBException,
RemoteException {
// TODO Auto-generated method stub

}

public void ejbRemove()
throws RemoveException,
EJBException,
RemoteException {
// TODO Auto-generated method stub

}

public void ejbActivate() throws EJBException, RemoteException {
// TODO Auto-generated method stub

}

public void ejbPassivate() throws EJBException, RemoteException {
// TODO Auto-generated method stub

}

public void ejbLoad() throws EJBException, RemoteException {
// TODO Auto-generated method stub

}
public void ejbStore() throws EJBException, RemoteException {
// TODO Auto-generated method stub

}

public abstract Integer getMemberId();
public abstract void setMemberId(Integer id);
public abstract String getMemberNumber();
public abstract void setMemberNumber(String memberNumber);
public abstract String getLastName();
public abstract void setLastName(String lastName);
public abstract String getFirstName();
public abstract void setFirstName(String firstName);
}
-------------------------------------------------------------------------------------------------------------------------------------------------------
Exception Stack trace
----------------

15:45:30,235 INFO [EARDeployer] Started J2EE application:
file:/D:/Projects/UFA/Pace_Phase_II/Development/jboss-4.0.1/server/default/deploy/SelfService.ear
15:45:33,389 ERROR [Member#findByLastName] Find failed
java.sql.SQLException: ERROR: parser: parse error at or near "FROM"
at character 9
at org.postgresql.core.QueryExecutor.executeV2(QueryExecutor.java:289)
at org.postgresql.core.QueryExecutor.execute(QueryExecutor.java:105)
at org.postgresql.core.QueryExecutor.execute(QueryExecutor.java:43)
at org.postgresql.jdbc1.AbstractJdbc1Statement.execute(AbstractJdbc1Statement.java:515)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:50)
at org.postgresql.jdbc1.AbstractJdbc1Statement.executeQuery(AbstractJdbc1Statement.java:231)
at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeQuery(WrappedPreparedStatement.java:296)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCAbstractQueryCommand.execute(JDBCAbstractQueryCommand.java:206)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCAbstractQueryCommand.execute(JDBCAbstractQueryCommand.java:128)

---------------------------------------------------------------------------------------------------
Here is the client code I'm using to access the finder method


try {
Context context = new InitialContext();

MemberLocalHome home = (MemberLocalHome) context
.lookup(MemberLocalHome.JNDI_NAME);
Collection members = home.findByLastName("Patel");
Iterator i = members.iterator();
while (i.hasNext()) {
MemberLocal member = (MemberLocal) i.next();
System.out.println("************* "
+ member.getFirstName());
}
} catch (Exception e) {
e.printStackTrace();
}
 
D

Dan Hinojosa

Since it is a SQL Exception and not jboss parser exception, there is
something wrong with the way jboss is generating the SQL. I am not a
postgres user but maybe members is reserved? Try setting the log
setting to DEBUG just to see exacty what JBoss is asking your database.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,053
Messages
2,570,431
Members
47,075
Latest member
TysonV438

Latest Threads

Top