We're using 1.0.0 and are having a problem with entities that inherit from
abstract classes marked with @MappedSuperClass apparently not being seen by
JPA when running in WebSphere. The same entities/queries work fine when the
code is taken out of the MappedSuperClasses and put into the actual entity
class.
The mapped class looks like:
@MappedSuperclass
public abstract class BaseUniqueEntity extends BaseEntity
{
@Id
@Column(name="U_OBJECT_ID")
private String objectID = null;
@Override
public String getObjectID()
{
// make an ID if we don't have one
if (objectID == null)
objectID = UniqueIDBean.getNextID();
return(objectID);
}
@Override
public void setObjectID(String objectID)
{
this.objectID = objectID;
}
}
The concrete class looks like:
@Entity
@NamedQueries({
@NamedQuery(name="User.getUserBySSN",
query="SELECT ue FROM User ue WHERE ue.nationalID =
:nationalID AND
ue.deleted <> 1"),
@NamedQuery(name="User.getUserByEmplID",
query="SELECT ue FROM User ue WHERE ue.emplID = :emplID
AND ue.deleted <>
1"),
@NamedQuery(name="User.getUserByUserName",
query="SELECT ue FROM User ue WHERE ue.loginName =
:username AND
ue.deleted <> 1")
})
@Table(name="USERS")
public class User extends BaseUniqueEntity implements Serializable
{
private static final long serialVersionUID = 5105012148661058753L;
/* @Id
@Column(name="U_OBJECT_ID")
private String objectID;
@Override
public String getObjectID()
{
return(objectID);
}
@Override
public void setObjectID(String id)
{
}
*/
@Column(name="SSN")
private String nationalID = null;
@Column(name="EMPLID")
private String emplID = null;
@Column(name="FNAME")
private String firstName = null;
@Column(name="LNAME")
private String lastName = null;
@Column(name="MNAME")
private String middleName = null;
...
}
The same code runs fine in the same environment if it is called via a
straight-up Java application.
Any help is much appreciated...
Thanks!
- John
Here is the stack trace produced:
[11/16/07 15:14:08:250 CST] 00000021 WebApp E [Servlet
Error]-[TychoHttpFrontController]: <openjpa-1.0.0-SNAPSHOT-r420667:578870
nonfatal general error> org.apache.openjpa.persistence.PersistenceException:
ORA-00904: "T0"."ID": invalid identifier
{prepstmnt 1054097108 SELECT t0.id, t0.STREET1, t0.STREET2,
t0.DATE_OF_BIRTH, t0.CITY, t0.COUNTRY, t0.DELETED, t0.EMAIL, t0.EMPLID,
t0.FNAME, t0.HOMEPHONE, t0.LASTLOGIN, t0.LNAME, t0.USERNAME, t0.MNAME,
t0.SSN, t0.OTHERPHONE, t0.PASSWORD, t1.U_OBJECT_ID, t1.AWARENESS_PREF,
t1.CD_DRIVE_ID, t1.EDITOR_PREF, t1.MENU_PREF, t1.QUOTE_PREF,
t1.JAVA_NAG_BOX, t1.SPELL_CHECK_PREF, t1.STAR_PREF, t1.TOUR_STATUS,
t0.SCHOOL, t0.STATE, t0.ZIP FROM USERS t0, USER_PREFERENCES t1 WHERE
(t0.USERNAME = ? AND t0.DELETED <> ?) AND t0.U_OBJECT_ID = t1.U_OBJECT_ID(+)
[params=(String) stest18, (long) 1]} [code=904, state=42000]
at
org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:3903)
at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:97)
at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:83)
at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:59)
at
org.apache.openjpa.jdbc.kernel.SelectResultObjectProvider.handleCheckedException(SelectResultObjectProvider.java:155)
at
org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:40)
at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1223)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:990)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:842)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:773)
at
org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:525)
at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:237)
at
org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:277)
at
edu.umuc.tycho.core.dao.impl.UserDAOImpl.findUserFromQuery(UserDAOImpl.java:198)
at
edu.umuc.tycho.core.dao.impl.UserDAOImpl.getUserByUserName(UserDAOImpl.java:116)
at
edu.umuc.tycho.core.service.impl.UserServiceImpl.findUser(UserServiceImpl.java:408)
at
edu.umuc.tycho.core.service.impl.UserServiceImpl.findUser(UserServiceImpl.java:358)
at
edu.umuc.tycho.core.service.impl.UserServiceImpl.getUserComplete(UserServiceImpl.java:164)
at
edu.umuc.tycho.core.web.filter.AuthenticationFilter.doFilter(AuthenticationFilter.java:154)
at
com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
at
com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
at
com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87)
at
com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:768)
at
com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:676)
at
com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:498)
at
com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:486)
at
com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:90)
at
com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:744)
at
com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1455)
at
com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:113)
at
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:454)
at
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:383)
at
com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:102)
at
com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at
com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at
com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:195)
at
com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:743)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:873)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1469)
Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: ORA-00904:
"T0"."ID": invalid identifier
{prepstmnt 1054097108 SELECT t0.id, t0.STREET1, t0.STREET2,
t0.DATE_OF_BIRTH, t0.CITY, t0.COUNTRY, t0.DELETED, t0.EMAIL, t0.EMPLID,
t0.FNAME, t0.HOMEPHONE, t0.LASTLOGIN, t0.LNAME, t0.USERNAME, t0.MNAME,
t0.SSN, t0.OTHERPHONE, t0.PASSWORD, t1.U_OBJECT_ID, t1.AWARENESS_PREF,
t1.CD_DRIVE_ID, t1.EDITOR_PREF, t1.MENU_PREF, t1.QUOTE_PREF,
t1.JAVA_NAG_BOX, t1.SPELL_CHECK_PREF, t1.STAR_PREF, t1.TOUR_STATUS,
t0.SCHOOL, t0.STATE, t0.ZIP FROM USERS t0, USER_PREFERENCES t1 WHERE
(t0.USERNAME = ? AND t0.DELETED <> ?) AND t0.U_OBJECT_ID = t1.U_OBJECT_ID(+)
[params=(String) stest18, (long) 1]} [code=904, state=42000]
at
org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:192)
at
org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.access$800(LoggingConnectionDecorator.java:57)
at
org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingPreparedStatement.executeQuery(LoggingConnectionDecorator.java:844)
at
org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:262)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement.executeQuery(JDBCStoreManager.java:1372)
at
org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:252)
at org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:369)
at org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:327)
at
org.apache.openjpa.jdbc.sql.LogicalUnion$UnionSelect.execute(LogicalUnion.java:407)
at
org.apache.openjpa.jdbc.sql.LogicalUnion.execute(LogicalUnion.java:218)
at
org.apache.openjpa.jdbc.sql.LogicalUnion.execute(LogicalUnion.java:208)
at
org.apache.openjpa.jdbc.kernel.SelectResultObjectProvider.open(SelectResultObjectProvider.java:94)
at
org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:34)
... 35 more
NestedThrowables:
java.sql.SQLException: ORA-00904: "T0"."ID": invalid identifier
at
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
at
oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:213)
at
oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:908)
at
oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1114)
at
oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:959)
at
oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1226)
at
oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3415)
at
oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3459)
at
org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:264)
at
org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingPreparedStatement.executeQuery(LoggingConnectionDecorator.java:842)
at
org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:262)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement.executeQuery(JDBCStoreManager.java:1372)
at
org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:252)
at org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:369)
at org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:327)
at
org.apache.openjpa.jdbc.sql.LogicalUnion$UnionSelect.execute(LogicalUnion.java:407)
at
org.apache.openjpa.jdbc.sql.LogicalUnion.execute(LogicalUnion.java:218)
at
org.apache.openjpa.jdbc.sql.LogicalUnion.execute(LogicalUnion.java:208)
at
org.apache.openjpa.jdbc.kernel.SelectResultObjectProvider.open(SelectResultObjectProvider.java:94)
at
org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:34)
at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1223)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:990)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:842)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:773)
at
org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:525)
at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:237)
at
org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:277)
at
edu.umuc.tycho.core.dao.impl.UserDAOImpl.findUserFromQuery(UserDAOImpl.java:198)
at
edu.umuc.tycho.core.dao.impl.UserDAOImpl.getUserByUserName(UserDAOImpl.java:116)
at
edu.umuc.tycho.core.service.impl.UserServiceImpl.findUser(UserServiceImpl.java:408)
at
edu.umuc.tycho.core.service.impl.UserServiceImpl.findUser(UserServiceImpl.java:358)
at
edu.umuc.tycho.core.service.impl.UserServiceImpl.getUserComplete(UserServiceImpl.java:164)
at
edu.umuc.tycho.core.web.filter.AuthenticationFilter.doFilter(AuthenticationFilter.java:154)
at
com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
at
com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
at
com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87)
at
com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:768)
at
com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:676)
at
com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:498)
at
com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:486)
at
com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:90)
at
com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:744)
at
com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1455)
at
com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:113)
at
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:454)
at
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:383)
at
com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:102)
at
com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at
com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at
com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:195)
at
com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:743)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:873)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1469)
---- Begin backtrace for Nested Throwables
java.sql.SQLException: ORA-00904: "T0"."ID": invalid identifier
at
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
at
oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:213)
at
oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:908)
at
oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1114)
at
oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:959)
at
oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1226)
at
oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3415)
at
oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3459)
at
org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:264)
at
org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingPreparedStatement.executeQuery(LoggingConnectionDecorator.java:842)
at
org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:262)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement.executeQuery(JDBCStoreManager.java:1372)
at
org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:252)
at org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:369)
at org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:327)
at
org.apache.openjpa.jdbc.sql.LogicalUnion$UnionSelect.execute(LogicalUnion.java:407)
at
org.apache.openjpa.jdbc.sql.LogicalUnion.execute(LogicalUnion.java:218)
at
org.apache.openjpa.jdbc.sql.LogicalUnion.execute(LogicalUnion.java:208)
at
org.apache.openjpa.jdbc.kernel.SelectResultObjectProvider.open(SelectResultObjectProvider.java:94)
at
org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:34)
at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1223)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:990)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:842)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:773)
at
org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:525)
at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:237)
at
org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:277)
at
edu.umuc.tycho.core.dao.impl.UserDAOImpl.findUserFromQuery(UserDAOImpl.java:198)
at
edu.umuc.tycho.core.dao.impl.UserDAOImpl.getUserByUserName(UserDAOImpl.java:116)
at
edu.umuc.tycho.core.service.impl.UserServiceImpl.findUser(UserServiceImpl.java:408)
at
edu.umuc.tycho.core.service.impl.UserServiceImpl.findUser(UserServiceImpl.java:358)
at
edu.umuc.tycho.core.service.impl.UserServiceImpl.getUserComplete(UserServiceImpl.java:164)
at
edu.umuc.tycho.core.web.filter.AuthenticationFilter.doFilter(AuthenticationFilter.java:154)
at
com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
at
com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
at
com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87)
at
com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:768)
at
com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:676)
at
com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:498)
at
com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:486)
at
com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:90)
at
com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:744)
at
com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1455)
at
com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:113)
at
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:454)
at
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:383)
at
com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:102)
at
com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at
com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at
com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:195)
at
com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:743)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:873)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1469)
--
View this message in context:
http://www.nabble.com/MappedSuperClass-ancestors-not-being-seen-in-web-application-tf4824054.html#a13802099
Sent from the OpenJPA Developers mailing list archive at Nabble.com.