[Hibernate-JIRA] Resolved: (EJB-82) Query interface should support parameter lists for positions
by Emmanuel Bernard (JIRA)
[ http://opensource.atlassian.com/projects/hibernate/browse/EJB-82?page=all ]
Emmanuel Bernard resolved EJB-82:
---------------------------------
Fix Version: 3.2.0.cr2
Resolution: Fixed
Assign To: Emmanuel Bernard
> Query interface should support parameter lists for positions
> ------------------------------------------------------------
>
> Key: EJB-82
> URL: http://opensource.atlassian.com/projects/hibernate/browse/EJB-82
> Project: Hibernate Entity Manager
> Type: Improvement
> Components: EntityManager
> Versions: 3.1beta5
> Environment: jboss 4.0.3 SP1, hibernate-entitymanager-3.1beta5, hibernate-3.1, hibernate-annotations-3.1beta7
> Reporter: Maxim Wirt
> Assignee: Emmanuel Bernard
> Priority: Minor
> Fix For: 3.2.0.cr2
>
>
> //Client.java
> @Entity
> public class Client implements Serializable {
> @Id
> private Long id;
> }
> // ClientDAO
> ...
> public Collection<Client> fetchByIds(Collection<Long> ids) {
> return em.createQuery("select c from Client c where c.id in(?1)").
> setParameter(1, ids).
> getResultList();
> }
> ...
> When I run fetchByIds(), I get:
> [org.hibernate.type.LongType] could not bind value '[420, 15, 223, 516, 641, 637, 748, 372, 33, 379]' to parameter: 1
> The same result if I use
> c.id = ANY(?1)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
18 years, 6 months
[Hibernate-JIRA] Resolved: (EJB-98) EntityManager.find() throws an org.hibernate.ObjectDeletedException if you find something deleted in the same TXA
by Emmanuel Bernard (JIRA)
[ http://opensource.atlassian.com/projects/hibernate/browse/EJB-98?page=all ]
Emmanuel Bernard resolved EJB-98:
---------------------------------
Resolution: Fixed
Assign To: Emmanuel Bernard
> EntityManager.find() throws an org.hibernate.ObjectDeletedException if you find something deleted in the same TXA
> -----------------------------------------------------------------------------------------------------------------
>
> Key: EJB-98
> URL: http://opensource.atlassian.com/projects/hibernate/browse/EJB-98
> Project: Hibernate Entity Manager
> Type: Bug
> Components: EntityManager
> Versions: 3.1beta5
> Environment: Java 1.5.06/junit3.8.1,hibernate 3.1, entity manager 3.1beta5, hsqldb 1.8.01
> Reporter: Steve Loughran
> Assignee: Emmanuel Bernard
> Fix For: 3.2.0.cr2
> Attachments: DefaultLoadEventListener.patch
>
>
> I have a junit test case that persists something, finds it, then deletes it and tries to find again.
> Second time round, find() fails with an ObjectDeletedException. This is the semantics of Session.load(), not EntityManager.find(), which is meant to return null if something cannot be found:
> public void testDeleteAndFindFailsWrong() throws Exception {
> Event event = createTestEvent();
> String key = event.getKey();
> EntityTransaction transaction = null;
> try {
> transaction = manager.getTransaction();
> transaction.begin();
> manager.persist(event);
> Event e2 = manager.find(Event.class, key);
> assertEquals(event, e2);
> manager.remove(e2);
> try {
> e2 = manager.find(Event.class, key);
> assertNull("The spec says that find should return null here", e2);
> } catch (ObjectDeletedException e) {
> fail("This is not in the spec"+e);
> }
> } finally {
> rollback(transaction);
> }
> }
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
18 years, 6 months
[Hibernate-JIRA] Resolved: (EJB-148) Incorrect exception when @CollectionOfElement is used with @Where and FetchType is EAGER
by Emmanuel Bernard (JIRA)
[ http://opensource.atlassian.com/projects/hibernate/browse/EJB-148?page=all ]
Emmanuel Bernard resolved EJB-148:
----------------------------------
Fix Version: 3.2.0.cr2
Resolution: Fixed
Assign To: Emmanuel Bernard
> Incorrect exception when @CollectionOfElement is used with @Where and FetchType is EAGER
> ----------------------------------------------------------------------------------------
>
> Key: EJB-148
> URL: http://opensource.atlassian.com/projects/hibernate/browse/EJB-148
> Project: Hibernate Entity Manager
> Type: Bug
> Components: EntityManager
> Versions: 3.1.0.Beta8
> Environment: Jboss Embedded Alfa 5, Hibernate 3.1, mysql 5.0.15
> Reporter: Filippo Guerzoni
> Assignee: Emmanuel Bernard
> Priority: Minor
> Fix For: 3.2.0.cr2
> Attachments: test.zip
>
>
> Hello,
> When using together
> @CollectionOfElements(fetch= FetchType.EAGER)
> @Where(clause="state='A'")
> @JoinTable(name = "functions_loglev", joinColumns = @JoinColumn(name = "id"))
> I'm exeperiencing the following MappingException that doesn't occur when using FetchType.LAZY
> ERROR 11-03 09:46:26,890 (AbstractController.java:incrementState:350) -Error installing to Start: name=persistence.units:jar=Prototype.jar,unitName=logdb state=Create
> org.hibernate.MappingException: @ManyToMany defining filter or where without join fetching not valid within collection using join fetching[model.strutcture.functions.levels]
> at org.hibernate.cfg.annotations.CollectionBinder.checkFilterConditions(CollectionBinder.java:863)
> at org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:849)
> at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:421)
> at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:382)
> at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:35)
> at org.hibernate.cfg.annotations.CollectionBinder.bind(CollectionBinder.java:331)
> at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1296)
> at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:629)
> at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:276)
> at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:210)
> at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:997)
> at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:722)
> at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:161)
> at org.hibernate.ejb.Ejb3Configuration.createEntityManagerFactory(Ejb3Configuration.java:567)
> at org.hibernate.ejb.Ejb3Configuration.createContainerEntityManagerFactory(Ejb3Configuration.java:245)
> at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:108)
> at org.jboss.ejb3.entity.PersistenceUnitDeployment.start(PersistenceUnitDeployment.java:260)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at org.jboss.joinpoint.plugins.reflect.ReflectMethodJoinPoint.dispatch(ReflectMethodJoinPoint.java:72)
> at org.jboss.kernel.plugins.dependency.KernelControllerContextActions.dispatchJoinPoint(KernelControllerContextActions.java:96)
> at org.jboss.kernel.plugins.dependency.KernelControllerContextActions$LifecycleAction.installAction(KernelControllerContextActions.java:476)
> at org.jboss.kernel.plugins.dependency.KernelControllerContextActions$KernelControllerContextAction.install(KernelControllerContextActions.java:171)
> at org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51)
> at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:226)
> at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:593)
> at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:346)
> at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:438)
> at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:379)
> at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:225)
> at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:151)
> at org.jboss.kernel.plugins.dependency.AbstractKernelController.install(AbstractKernelController.java:79)
> at org.jboss.kernel.plugins.dependency.AbstractKernelController.install(AbstractKernelController.java:73)
> at org.jboss.ejb3.MCKernelAbstraction.install(MCKernelAbstraction.java:86)
> at org.jboss.ejb3.Ejb3Deployment.startPersistenceUnits(Ejb3Deployment.java:599)
> at org.jboss.ejb3.Ejb3Deployment.start(Ejb3Deployment.java:452)
> at org.jboss.ejb3.embedded.EJB3StandaloneDeployer.start(EJB3StandaloneDeployer.java:450)
> at AllModelTests.startupEmbeddedJboss(AllModelTests.java:49)
> at AllModelTests$1.setUp(AllModelTests.java:25)
> at junit.extensions.TestSetup$1.protect(TestSetup.java:18)
> at junit.framework.TestResult.runProtected(TestResult.java:124)
> at junit.extensions.TestSetup.run(TestSetup.java:23)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
> Deleting the @WHERE annotation the Exception disappears.
> I can't understand it at all.
> Why the stack trace refers to manytomany? It's a simple composition of elements.
> Thanks in advance.
> F
> Hibernate version:
> 3.1 with annotations beta8
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
18 years, 6 months
[Hibernate-JIRA] Updated: (EJB-148) Incorrect exception when @CollectionOfElement is used with @Where and FetchType is EAGER
by Emmanuel Bernard (JIRA)
[ http://opensource.atlassian.com/projects/hibernate/browse/EJB-148?page=all ]
Emmanuel Bernard updated EJB-148:
---------------------------------
Summary: Incorrect exception when @CollectionOfElement is used with @Where and FetchType is EAGER (was: Where clause in CollectionOfElements when FetchType is EAGER)
I've opened a different case for the filter and where enhancement
> Incorrect exception when @CollectionOfElement is used with @Where and FetchType is EAGER
> ----------------------------------------------------------------------------------------
>
> Key: EJB-148
> URL: http://opensource.atlassian.com/projects/hibernate/browse/EJB-148
> Project: Hibernate Entity Manager
> Type: Bug
> Components: EntityManager
> Versions: 3.1.0.Beta8
> Environment: Jboss Embedded Alfa 5, Hibernate 3.1, mysql 5.0.15
> Reporter: Filippo Guerzoni
> Priority: Minor
> Attachments: test.zip
>
>
> Hello,
> When using together
> @CollectionOfElements(fetch= FetchType.EAGER)
> @Where(clause="state='A'")
> @JoinTable(name = "functions_loglev", joinColumns = @JoinColumn(name = "id"))
> I'm exeperiencing the following MappingException that doesn't occur when using FetchType.LAZY
> ERROR 11-03 09:46:26,890 (AbstractController.java:incrementState:350) -Error installing to Start: name=persistence.units:jar=Prototype.jar,unitName=logdb state=Create
> org.hibernate.MappingException: @ManyToMany defining filter or where without join fetching not valid within collection using join fetching[model.strutcture.functions.levels]
> at org.hibernate.cfg.annotations.CollectionBinder.checkFilterConditions(CollectionBinder.java:863)
> at org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:849)
> at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:421)
> at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:382)
> at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:35)
> at org.hibernate.cfg.annotations.CollectionBinder.bind(CollectionBinder.java:331)
> at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1296)
> at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:629)
> at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:276)
> at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:210)
> at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:997)
> at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:722)
> at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:161)
> at org.hibernate.ejb.Ejb3Configuration.createEntityManagerFactory(Ejb3Configuration.java:567)
> at org.hibernate.ejb.Ejb3Configuration.createContainerEntityManagerFactory(Ejb3Configuration.java:245)
> at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:108)
> at org.jboss.ejb3.entity.PersistenceUnitDeployment.start(PersistenceUnitDeployment.java:260)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at org.jboss.joinpoint.plugins.reflect.ReflectMethodJoinPoint.dispatch(ReflectMethodJoinPoint.java:72)
> at org.jboss.kernel.plugins.dependency.KernelControllerContextActions.dispatchJoinPoint(KernelControllerContextActions.java:96)
> at org.jboss.kernel.plugins.dependency.KernelControllerContextActions$LifecycleAction.installAction(KernelControllerContextActions.java:476)
> at org.jboss.kernel.plugins.dependency.KernelControllerContextActions$KernelControllerContextAction.install(KernelControllerContextActions.java:171)
> at org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51)
> at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:226)
> at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:593)
> at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:346)
> at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:438)
> at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:379)
> at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:225)
> at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:151)
> at org.jboss.kernel.plugins.dependency.AbstractKernelController.install(AbstractKernelController.java:79)
> at org.jboss.kernel.plugins.dependency.AbstractKernelController.install(AbstractKernelController.java:73)
> at org.jboss.ejb3.MCKernelAbstraction.install(MCKernelAbstraction.java:86)
> at org.jboss.ejb3.Ejb3Deployment.startPersistenceUnits(Ejb3Deployment.java:599)
> at org.jboss.ejb3.Ejb3Deployment.start(Ejb3Deployment.java:452)
> at org.jboss.ejb3.embedded.EJB3StandaloneDeployer.start(EJB3StandaloneDeployer.java:450)
> at AllModelTests.startupEmbeddedJboss(AllModelTests.java:49)
> at AllModelTests$1.setUp(AllModelTests.java:25)
> at junit.extensions.TestSetup$1.protect(TestSetup.java:18)
> at junit.framework.TestResult.runProtected(TestResult.java:124)
> at junit.extensions.TestSetup.run(TestSetup.java:23)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
> Deleting the @WHERE annotation the Exception disappears.
> I can't understand it at all.
> Why the stack trace refers to manytomany? It's a simple composition of elements.
> Thanks in advance.
> F
> Hibernate version:
> 3.1 with annotations beta8
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
18 years, 6 months
[Hibernate-JIRA] Commented: (EJB-161) mappedBy and quotes ("") in the @ManyToMany
by Emmanuel Bernard (JIRA)
[ http://opensource.atlassian.com/projects/hibernate/browse/EJB-161?page=co... ]
Emmanuel Bernard commented on EJB-161:
--------------------------------------
` backticks is the way to go BTW
> mappedBy and quotes ("") in the @ManyToMany
> -------------------------------------------
>
> Key: EJB-161
> URL: http://opensource.atlassian.com/projects/hibernate/browse/EJB-161
> Project: Hibernate Entity Manager
> Type: Bug
> Components: EntityManager
> Versions: 3.1beta3
> Environment: DataBase FireBird 2.0 (JayBird-2.0.1JDK_1.5)
> Reporter: Vladimir Bronnikov
>
>
> Have a problem. Possible it's a Hibernate bug (error):
> ... I'm using DataBase FireBird (Dialect 3). I'm using a lowcase latters for naming columns... Name of column put (enclose) into quotes ( for example "role_id").
> In Java I'm writing: (for example "\"atn_rule\""):
> @Entity (access = AccessType.FIELD)
> @Table (name = "\"atn_rule\"")
> @SequenceGenerator (name = "rule.id", sequenceName = "\"rule_id_g\"")
> public class Rule implements Serializable {
> private static final long serialVersionUID = 7418346480207570210L;
>
> @Id (generate = GeneratorType.SEQUENCE, generator = "rule.id")
> @Column (name = "\"id\"")
> private Integer id;
>
> @ManyToMany (fetch = FetchType.LAZY)
> @JoinTable (
> table = @Table (name = "\"atn_principal_permission\""),
> joinColumns = @JoinColumn (
> name = "\"rule_id\"",
> referencedColumnName = "id"
> ),
> inverseJoinColumns = @JoinColumn (
> name = "\"principal_id\"",
> referencedColumnName = "id"
> )
> )
> private List<Role> roles;
> }
> @Entity (access = AccessType.FIELD)
> @Table (name ="\"atn_principal\"")
> @SequenceGenerator (name = "principal.id", sequenceName = "\"principal_id_g\"")
> public class Role extends AbstractEntity implements Serializable {
> private static final long serialVersionUID = -8655514511640110474L;
> @Id (generate = GeneratorType.SEQUENCE, generator = "principal.id")
> @Column (name = "\"id\"")
> private Integer id;
>
> @ManyToMany (mappedBy = "roles")
> private List<Rule> rules;
> }
> After execution this: role.rules FireBird send error:
> SQL error code = -206
> Column unknown
> RULES0_.RULE_ID
> i.e. instead of RULES0_."rule_id" name of column change to upper case. However rule.roles have no errors.
> P.S. I'm also use back quote `atn_rule` with the same result.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
18 years, 6 months
[Hibernate-JIRA] Resolved: (EJB-161) mappedBy and quotes ("") in the @ManyToMany
by Emmanuel Bernard (JIRA)
[ http://opensource.atlassian.com/projects/hibernate/browse/EJB-161?page=all ]
Emmanuel Bernard resolved EJB-161:
----------------------------------
Resolution: Duplicate
Hi Vladimir,
I've done a lot of work in this area in the subsequent releases.
I think your bug is fixed. you cna check the latest version (to be release soon)
> mappedBy and quotes ("") in the @ManyToMany
> -------------------------------------------
>
> Key: EJB-161
> URL: http://opensource.atlassian.com/projects/hibernate/browse/EJB-161
> Project: Hibernate Entity Manager
> Type: Bug
> Components: EntityManager
> Versions: 3.1beta3
> Environment: DataBase FireBird 2.0 (JayBird-2.0.1JDK_1.5)
> Reporter: Vladimir Bronnikov
>
>
> Have a problem. Possible it's a Hibernate bug (error):
> ... I'm using DataBase FireBird (Dialect 3). I'm using a lowcase latters for naming columns... Name of column put (enclose) into quotes ( for example "role_id").
> In Java I'm writing: (for example "\"atn_rule\""):
> @Entity (access = AccessType.FIELD)
> @Table (name = "\"atn_rule\"")
> @SequenceGenerator (name = "rule.id", sequenceName = "\"rule_id_g\"")
> public class Rule implements Serializable {
> private static final long serialVersionUID = 7418346480207570210L;
>
> @Id (generate = GeneratorType.SEQUENCE, generator = "rule.id")
> @Column (name = "\"id\"")
> private Integer id;
>
> @ManyToMany (fetch = FetchType.LAZY)
> @JoinTable (
> table = @Table (name = "\"atn_principal_permission\""),
> joinColumns = @JoinColumn (
> name = "\"rule_id\"",
> referencedColumnName = "id"
> ),
> inverseJoinColumns = @JoinColumn (
> name = "\"principal_id\"",
> referencedColumnName = "id"
> )
> )
> private List<Role> roles;
> }
> @Entity (access = AccessType.FIELD)
> @Table (name ="\"atn_principal\"")
> @SequenceGenerator (name = "principal.id", sequenceName = "\"principal_id_g\"")
> public class Role extends AbstractEntity implements Serializable {
> private static final long serialVersionUID = -8655514511640110474L;
> @Id (generate = GeneratorType.SEQUENCE, generator = "principal.id")
> @Column (name = "\"id\"")
> private Integer id;
>
> @ManyToMany (mappedBy = "roles")
> private List<Rule> rules;
> }
> After execution this: role.rules FireBird send error:
> SQL error code = -206
> Column unknown
> RULES0_.RULE_ID
> i.e. instead of RULES0_."rule_id" name of column change to upper case. However rule.roles have no errors.
> P.S. I'm also use back quote `atn_rule` with the same result.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
18 years, 6 months
[Hibernate-JIRA] Resolved: (EJB-174) Ejb3Configuration can't open EJB Jar file with persistence.xml in Oracle OC4J server (Jifeng Liu)
by Emmanuel Bernard (JIRA)
[ http://opensource.atlassian.com/projects/hibernate/browse/EJB-174?page=all ]
Emmanuel Bernard resolved EJB-174:
----------------------------------
Fix Version: 3.2.0.cr2
Resolution: Fixed
Assign To: Emmanuel Bernard
Applied.
Thanks and please test :-)
> Ejb3Configuration can't open EJB Jar file with persistence.xml in Oracle OC4J server (Jifeng Liu)
> -------------------------------------------------------------------------------------------------
>
> Key: EJB-174
> URL: http://opensource.atlassian.com/projects/hibernate/browse/EJB-174
> Project: Hibernate Entity Manager
> Type: Bug
> Components: EntityManager
> Versions: 3.1.0.Beta8
> Environment: Hibernate core 3.2rc1; Hibernate Annotation 3.1.0 beta 10
> Oracle OC4J 10.1.13
> Oracle 9
> Reporter: Jifeng Liu
> Assignee: Emmanuel Bernard
> Priority: Minor
> Fix For: 3.2.0.cr2
>
>
> In Oracle OC4J server, I created an EJB jar file, ejbSenior.jar, and put persistence.xml in its /META-INF folder. After deploying this EJB jar, I called javax.persistence.Persistence.createEntityManagerFactory("hibernate"). I got the following debug information and exception stack trace:
> 14:36:23 DEBUG Ejb3Configuration - Archive to be processed by hibernate Entity Manager implementation found
> 14:36:23 DEBUG JarVisitor - Searching mapped entities in jar/par: code-source:/C:/my/ws31/NewOC4J/ora92/j2ee/home/applic
> ations/SeniorApps/ejbSenior.jar
> 14:36:23 DEBUG Ejb3Configuration - Persistence unit name: hibernate
> 14:36:23 DEBUG Ejb3Configuration - emname:hibernate metadata: hibernate
> 14:36:23 WARN InputStreamZippedJarVisitor - Unable to find file (ignored): code-source:/C:/my/ws31/NewOC4J/ora92/j2ee/h
> ome/applications/SeniorApps/ejbSenior.jar
> java.io.IOException: code-source:/C:/my/ws31/NewOC4J/ora92/j2ee/home/applications/SeniorApps/ejbSenior.jar has no "!<pat
> h>" suffix so does not name a path within the code-source.
> at oracle.classloader.SharedCodeSourceSet.getResourceStream(SharedCodeSourceSet.java:482)
> at oracle.classloader.SharedCodeSourceURL$Connection.getInputStream(SharedCodeSourceURL.java:93)
> at java.net.URL.openStream(URL.java:1007)
> at org.hibernate.ejb.packaging.InputStreamZippedJarVisitor.doProcessElements(InputStreamZippedJarVisitor.java:33)
> at org.hibernate.ejb.packaging.JarVisitor.getMatchingEntries(JarVisitor.java:208)
> at org.hibernate.ejb.Ejb3Configuration.addMetadataFromVisitor(Ejb3Configuration.java:201)
> at org.hibernate.ejb.Ejb3Configuration.createEntityManagerFactory(Ejb3Configuration.java:183)
> at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:114)
> at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:37)
> at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:27)
> at com.senior.dal.shared.util.HbSessionFactory.getEntityManagerFactory(HbSessionFactory.java:40)
> After debugging it, I found Oracle OC4J's class loader creates a special URL with protocol 'code-source'. You can use this URL to get any resource inside EJB jar file. But you can't use it to read the EJB jar file itself.
> I wrote a small patch to fix it by changing the URL to an URL pointing to a file:
> In org.hibernate.ejb.packaging.JarVisitor java file, I add new code between "patch begins" and "patch ends" comment:
> public static final URL getJarURLFromURLEntry(URL url, String entry) throws IllegalArgumentException {
> URL jarUrl;
> String file = url.getFile();
> if ( ! entry.startsWith( "/" ) ) entry = "/" + entry;
> file = file.substring( 0, file.length() - entry.length() );
> if ( file.endsWith( "!" ) ) file = file.substring( 0, file.length() - 1 );
> try {
>
> if ( "jar".equals( url.getProtocol() ) ) {
> jarUrl = new URL( file );
> }
> // patch starts
> else if ("code-source".equals( url.getProtocol() ) ) {
> jarUrl = new File(file).toURL();
> }
> // patch ends
> else {
> jarUrl = new URL( url.getProtocol(), url.getHost(), url.getPort(), file );
> }
> }
> catch (MalformedURLException e) {
> throw new IllegalArgumentException(
> "Unable to determine JAR Url from " + url + ". Cause: " + e.getMessage()
> );
> }
> return jarUrl;
> }
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
18 years, 6 months