]
Hardy Ferentschik commented on HV-374:
--------------------------------------
Do you have a patch? If so, it would be great if you could attach it this issue or create
a pull request on git for
NoSuchMethodError on Persistence.getPersistenceUtil() on WebLogic
10.3.3 (11g)
------------------------------------------------------------------------------
Key: HV-374
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HV-374
Project: Hibernate Validator
Issue Type: Bug
Affects Versions: 4.1.0.Final
Environment: WebLogic 10.3.3 (11g)
Reporter: Vitaly Polonetsky
Assignee: Hardy Ferentschik
Fix For: 4.2.0.Beta1
Original Estimate: 8h
Remaining Estimate: 8h
The latest WebLogic comes with hybrid configuration of JPA 1.0 with some features of JPA
2.0:
https://support.oracle.com/CSP/main/article?cmd=show&type=NOT&doc...
This causes a problem with the way Hibernate Validator checks for existence of JPA 2.0:
org.hibernate.validator.engine.resolver.DefaultTraversableResolver.detectJPA() checks for
existance of javax.persistence.PersistenceUtil class (which exists only in JPA 2.0), but
org.hibernate.validator.engine.resolver.JPATraversableResolver will not use it directly,
instead it will use javax.persistence.Persistence.getPersistenceUtil() (the class exists
for JPA 1.0, but the method is available only at JPA 2.0).
This check is good for situations where either full JPA 1.0 or full 2.0 implementation is
available, but is cases like we have in WebLogic it leads to an Error:
{code}
java.lang.NoSuchMethodError:
javax.persistence.Persistence.getPersistenceUtil()Ljavax/persistence/PersistenceUtil;
at
org.hibernate.validator.engine.resolver.JPATraversableResolver.isReachable(JPATraversableResolver.java:62)
at
org.hibernate.validator.engine.resolver.DefaultTraversableResolver.isReachable(DefaultTraversableResolver.java:94)
at
org.hibernate.validator.engine.resolver.SingleThreadCachedTraversableResolver.isReachable(SingleThreadCachedTraversableResolver.java:47)
at
org.hibernate.validator.engine.ValidatorImpl.isValidationRequired(ValidatorImpl.java:757)
at
org.hibernate.validator.engine.ValidatorImpl.validateConstraint(ValidatorImpl.java:324)
at
org.hibernate.validator.engine.ValidatorImpl.validateConstraintsForRedefinedDefaultGroup(ValidatorImpl.java:273)
at
org.hibernate.validator.engine.ValidatorImpl.validateConstraintsForCurrentGroup(ValidatorImpl.java:256)
at org.hibernate.validator.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:210)
at org.hibernate.validator.engine.ValidatorImpl.validate(ValidatorImpl.java:119)
...
{code}
I would suggest a possible way to overcome this situation in Hibernate Validator:
To check for existence of JPA 2.0, check the existence of
Persistence.getPersistenceUtil() method, instead of checking for the existence of
PersistenceUtil class. This will disable the use of JPA 2.0 features inside HV when the
method is not available.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: