[jboss-jira] [JBoss JIRA] (AS7-3110) Enhance validation message when multiple persistence units are found
Hendy Irawan (JIRA)
jira-events at lists.jboss.org
Tue May 22 03:29:21 EDT 2012
[ https://issues.jboss.org/browse/AS7-3110?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12694574#comment-12694574 ]
Hendy Irawan commented on AS7-3110:
-----------------------------------
The fix is almost trivial. In org.jboss.as.jpa.processor.JPAAnnotationParseProcessor :
{code}
private PersistenceUnitMetadata getPersistenceUnit(final DeploymentUnit deploymentUnit, final AnnotationInstance annotation, EEModuleClassDescription classDescription)
throws DeploymentUnitProcessingException {
final AnnotationValue puName = annotation.value("unitName");
String searchName = null; // note: a null searchName will match the first PU definition found
if (puName != null) {
searchName = puName.asString();
}
PersistenceUnitMetadata pu = PersistenceUnitSearch.resolvePersistenceUnitSupplier(deploymentUnit, searchName);
if (null == pu) {
classDescription.setInvalid(MESSAGES.persistenceUnitNotFound(searchName, deploymentUnit));
return null;
}
return pu;
}
{code}
Logging (in DEBUG) the classDescription.getClassName() and annotation.toString() would be tremendously helpful in case of problems.
In my case, it was caused by:
@javax.persistence.PersistenceContext() on void org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.setEntityManager(javax.persistence.EntityManager)
in org.springframework.data:spring-data-jpa:1.1.0.RC1 .
But it took me a long time to diagnose this problem. Eventually I resorted to grabbing the jbossas-jpa sources and running JBoss AS in debug mode to find the culprit.
> Enhance validation message when multiple persistence units are found
> --------------------------------------------------------------------
>
> Key: AS7-3110
> URL: https://issues.jboss.org/browse/AS7-3110
> Project: Application Server 7
> Issue Type: Enhancement
> Components: JPA / Hibernate
> Reporter: Markus Dahm
> Assignee: Scott Marlow
> Priority: Minor
> Fix For: 7.2.0.Alpha1
>
>
> The current message is
> Caused by: java.lang.IllegalArgumentException: JBAS011470: Persistence unitName was not specified and there are 9 persistence unit definitions in application deployment "test.ear". Either change the application to have only one persistence unit definition or specify the unitName for each reference to a persistence unit.
> Yet what is always helpful in search of such validation errors is the context.
> In that case the offending class name would suffice, you should have this information at hands since you're scanning the classes, right?
>
> Given that information I'd have found the problem immediately.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list