openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rick Curtis (JIRA)" <j...@apache.org>
Subject [jira] [Closed] (OPENJPA-1976) EntityManager.find method cause errors
Date Sun, 10 Apr 2011 13:16:05 GMT

     [ https://issues.apache.org/jira/browse/OPENJPA-1976?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Rick Curtis closed OPENJPA-1976.
--------------------------------

    Resolution: Not A Problem
      Assignee: Rick Curtis

Chuong -

Lets start off with the javadoc for javax.persistence.EntityManager.find(Class<T> entityClass,
Object primaryKey).

----
<T> T find(Class<T> entityClass, Object primaryKey)

    Find by primary key.

    Parameters:
        entityClass - 
        primaryKey - 
    Returns:
        the found entity instance or null if the entity does not exist 
    Throws:
        IllegalStateException - if this EntityManager has been closed. 
        IllegalArgumentException - if the first argument does not denote an entity type or
the second argument is not a valid type for that entity's primary key
---

The last part of the IllegalArgumentException states an exception will be thrown when "the
second argument is not a valid type for that entity's primary key". By looking at your BookModel
there is one column annotated as the ID column and that column is not a java.lang.String.
I'm not sure what your intent was, but it was wrong. You can't call EntityManager.find with
a non-primary key value. (Your primary key is a Long, but you passed a String.)

Now on to stacktrace 2. If you dig down through that you will see that OpenJPA is getting
an IllegalStateException[1] from the application server. After doing a little bit of googling
around, I was able to find a number of posts that talk about Glassfish having problems reloading
classes after WAR redeploy. I'm not sure if that is your scenario, but it surely this isn't
an OpenJPA problem. Perhaps you could try to restart the application server? The net of this
is that you're going to have to work with the glassfish folks to figure out why we can't load
that class.

In the future, please utilize the users/dev mailing lists[2] to ask questions and wait to
open a JIRA until we're sure there is a bug. I'm closing this JIRA as there is nothing to
do here. If you would like to continue asking questions, please move this over to the users
mailing list.

Thanks,
Rick


[1] Caused by: java.lang.IllegalStateException: WEB9031: WebappClassLoader unable to load
resource [org.apache.openjpa.util.LongId], because it has not yet been started, or was already
stopped
	at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1410) <--
Glassfish
	at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1368)
	at au.com.ckd.model.BookModel.pcNewObjectIdInstance(BookModel.java)

[2] http://openjpa.apache.org/mailing-lists.html

> EntityManager.find method cause errors
> --------------------------------------
>
>                 Key: OPENJPA-1976
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-1976
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jpa
>    Affects Versions: 2.1.0
>         Environment: Glassfish 3.1, JSF 2.1.0, Apache OpenJPA 2.1.0, MySQL 5.5.10, Eclipse
Helios IDE, Windows XP Service Pack 3
>            Reporter: Chuong Pham
>            Assignee: Rick Curtis
>              Labels: features, test
>         Attachments: ENTITY.txt, SCENARIO 1 STACKTRACE.txt, SCENARIO 2 STACKTRACE.txt
>
>
> Scenario 1: The EntityManager.find method is unable to pass a String value as its second
parameter and caused the following error:
> <openjpa-2.1.0-r422266:1071316 nonfatal user error> org.apache.openjpa.persistence.ArgumentException:
The given value "214736890D96ED598E1D3050F1F025A7" cannot be converted into an identity for
"com.ckd.model.BookModel".  The value is the wrong type (java.lang.String).
> java.lang.NumberFormatException: For input string: "214736890D96ED598E1D3050F1F025A7"
> It seems from the errors above that the EntityManager.find method will only accept a
numeric value as its second parameter.
> Scenario 2: The EntityManager.find method is unable to pass a Long value and caused the
following error:
> <openjpa-2.1.0-r422266:1071316 fatal user error> org.apache.openjpa.persistence.ArgumentException:
An error occurred while processing registered class "class com.ckd.model.BookModel".
> java.lang.IllegalStateException: WEB9031: WebappClassLoader unable to load resource [org.apache.openjpa.util.LongId],
because it has not yet been started, or was already stopped
> The columns used for testing are from a MySQL 5.x table and have the following definitions:
> ID SMALLINT(5)
> HASHID VARCHAR(32)
> The value of HASHID is used to test Scenario 1; while the value of ID is used to test
Scenario 2.
> Conclusion: The above scenarios show that the EntityManager.find method is currently
unusable/buggy and needs to be investigated for the next release.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message