[
https://issues.apache.org/jira/browse/OPENJPA-1976?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13018192#comment-13018192
]
Chuong Pham commented on OPENJPA-1976:
--------------------------------------
Thanks for the info, Rick.
As for passing a String value as a second parameter to the EntityManager.find
method, I realised after I posted the issue that as per OpenJPA doc that the
second parameter can only accepts a primary key value. I suppose my comment
regarding passing a String value to the EntityManager.find method should have
been: Can I pass a String value as a second parameter to the EntityManager.find
method in a future release of the OpenJPA? I noticed that some of the examples
I found for EclipseLink suggested that it can accept a String and not
restricted to a primary key. I was hoping that OpenJPA can do the same - well
not, in the current release anyway. The reason for passing a [hashed] string is
because I'm getting the value of the id parameter from the URL to be used with
the EntityManager.find method, for example
bookview?id=214736890D96ED598E1D3050F1F025A7 as opposed to bookview?id=5148 -
which is the actual primary key of the record in the table. For me, it would be
"safer" to pass a hashed value to prevent anyone from parameter tampering -
even though I have server-side validation enforced on parameters - still IMHO,
it would be a safer alternative to passing a primary key. The hashed value I
have created [via database trigger] uses AES encryption and, as far as I know,
has not been compromised by collusion or otherwise. I hope this explains why I
am using a String as opposed to a Long value.
As for the IllegalStateException error with Glassfish, I have restarted
Glassfish several times, even went so far as to delete the build directory of
the project and delete the eclipseApps and autodeploy directories under
Glassfish and start again - all without success. Also, I have logged a post in
the Glassfish forum - but so far, the responses I have received does not
indicate that this might be a Glassfish issue, though I'm waiting for more
responses to confirm that. I apologise in advance if this IS a Glassfish issue
and I have wasted your time.
Thanks for the link to the OpenJPA User Mailing List. Much appreciated. I'll
post the question there and see if anyone else has a similar issue as I have.
Regards
Chuong
> 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