entityManager.find() returns null
tboswell Sep 19, 2006 7:05 AMI am using JBoss 4.0.4-GA with Oracle XE. I have two tables which have strings for their PK and the PK column is named the same as the table:
CREATE TABLE CURRENCY ( CURRENCY CHAR(8 CHAR) NOT NULL, ... ) CREATE TABLE LANGUAGE ( LANGUAGE CHAR(8 CHAR) NOT NULL, ... )
This is not ideal I know but it was what I was given to work with.
I find that when using the corresponding entity beans if I use the code:
entityManager.find(Language.class, "en");
this will return me a null value despite the row existing.
This is not a problem when using other entity manager functions A query like
entityManager.createQuery("from Language l").getResultList();will run fine and result all the expected results.
If I call the same code from a test case which is wrapped within a single transaction, I can create an object, insert it and run the same code within the transaction and find it OK.
Only when I am trying to find records already existing outside the transaction do I get the problem.
With DEBUG I have checked the query that Hibernate runs and this runs fine in Oracle but still returns a null to me within my session bean code.
select language0_.LANGUAGE as LANG1_73_0_, language0_.NAME as NAME73_0_, language0_.SHORT_NAME as SHORT3_73_0_, language0_.CREATED as CREATED73_0_, language0_.INSERTED as INSERTED73_0_, language0_.MODIFIED as MODIFIED73_0_, language0_.ENABLED as ENABLED73_0_, language0_.ENABLED_DATE as ENABLED8_73_0_, language0_.COMMENTS as COMMENTS73_0_, language0_.TESTED as TESTED73_0_, language0_.SUPPORTED as SUPPORTED73_0_, language0_.TESTED_DATE as TESTED12_73_0_, language0_.SUPPORTED_DATE as SUPPORTED13_73_0_, language0_.DEFAULT_TO_LANGUAGE as DEFAULT14_73_0_ from LANGUAGE language0_ where language0_.LANGUAGE='en';
I have tried several permutations of changing the table and PK column names but to no avail. For example change the PK name I get this query
select language0_.LANG_CODE as LANG1_73_0_, language0_.NAME as NAME73_0_, language0_.SHORT_NAME as SHORT3_73_0_, language0_.CREATED as CREATED73_0_, language0_.INSERTED as INSERTED73_0_, language0_.MODIFIED as MODIFIED73_0_, language0_.ENABLED as ENABLED73_0_, language0_.ENABLED_DATE as ENABLED8_73_0_, language0_.COMMENTS as COMMENTS73_0_, language0_.TESTED as TESTED73_0_, language0_.SUPPORTED as SUPPORTED73_0_, language0_.TESTED_DATE as TESTED12_73_0_, language0_.SUPPORTED_DATE as SUPPORTED13_73_0_, language0_.DEFAULT_TO_LANGUAGE as DEFAULT14_73_0_ from LANGUAGE language0_ where language0_.LANG_CODE='en';
But the same result.
Is there something I am doing here that Hibernate doesn't expect or is there a known bug?
Thanks,
Tom Boswell