-
1. Re: How to configure Hibernate console with entities in many
maxandersen Oct 17, 2008 11:27 AM (in response to chawax)hibernate console should just pick them up for you by being in the classpath of the project - if not its a bug.
<jar-file> should also work, but you would need a jar file to be present ;) -
2. Re: How to configure Hibernate console with entities in many
chawax Oct 17, 2008 11:45 AM (in response to chawax)Thanks Max.
My other projects are mavenized, so I have the needed jar file :) But where should I set ejb-jar ? Do I have to do it in a persistence.xml file ? If so, does Hibernate look for persistence.xml file in classpath (this would be a problem for me since I have different persistence.xml files my both projects because of jar-file property) ? Or is there a way to tell Hibernate console to use one specific persistence.xml file ?
Anyway I can make it work by adding to the classpath a jar that shades both t4-core-commons.jar and t4-core-utils.jar (I had to build this one to make hbm2ddl work). But since Hibernate console is to be used when writing HQL, I don't find very convenient to have to build jars before entities are not completely written. -
3. Re: How to configure Hibernate console with entities in many
maxandersen Oct 20, 2008 2:07 AM (in response to chawax)Console just uses hibernate to load the classes/persistence.xml just like hibernate annotations/entitymanager would do.
You can tell hibernate console which persistence unit to pick (i.e. the name of it, not the location)
its weird that it works if you add the jar to the classpath - I wonder why the pure classes classpath does not work... -
4. Re: How to configure Hibernate console with entities in many
chawax Oct 20, 2008 5:22 AM (in response to chawax)Yes, I hardly understand why it doesn't work.
To be more precise, my t4-core-commons project contains this persistence.xml file :<?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0"> <persistence-unit name="t4Seam"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <jta-data-source>java:/jdbc/t4Seam</jta-data-source> <jar-file>../test-classes/lib/t4-core-utils-core.jar</jar-file> <properties> <property name="hibernate.hbm2ddl.auto" value="update"/> <property name="hibernate.show_sql" value="false"/> </properties> </persistence-unit> </persistence>
And t4-core-utils.jar contains the following persistence.xml file :<?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0"> <persistence-unit name="t4Seam"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <jta-data-source>java:/jdbc/t4Seam</jta-data-source> <properties> <property name="hibernate.hbm2ddl.auto" value="update"/> <property name="hibernate.show_sql" value="false"/> </properties> </persistence-unit> </persistence>
I have some doubts on Hibernate behaviour when it finds two persistence.xml files with the same persistence unit in the classpath. It looks like it takes into account only the first one it finds in classpath. If t4-core-commons is first in the classpath, it crashes because it can't find entities defined in t4-core-utils. If t4-core-utils is first in the classpath, it loads only entities defined in t4-core-utils (entities there don't depend on t4-core-commons ones) and not the ones defined in t4-core-commons. The only solution I found to make it work is to build a jar that bundles entities of both t4-core-commons and t4-core-utils, but as I said it's not very convenient. Do you have more details about the way Hibernate behaves if it finds a persistenc unit twice ? -
5. Re: How to configure Hibernate console with entities in many
maxandersen Oct 20, 2008 5:44 AM (in response to chawax)well, autoscanning don't work across the persistence unit the persistence.xml is located in.
I'll ping emanuel to let him in explain if there are any workarounds. -
6. Re: How to configure Hibernate console with entities in many
chawax Oct 20, 2008 5:48 AM (in response to chawax)Thanks for your response Max. I have a workaround for the moment as I said, not very convenient, but at least it exists ! It would be great anyway if Emmanuel has a better workaround.
-
7. Re: How to configure Hibernate console with entities in many
epbernard Oct 20, 2008 5:16 PM (in response to chawax)Can you try to not give them the same name. If these are supposed to be the same PU, why several files. If they are supposed to be different PU, why the same name :)
Anyway I don't think it's related to your problem.
One way to work around it is to manually list the classes in persistence.xml
org.jboss.example.model.Account
That way the auto discovery mechanism is bypassed.
Generally speaking if entities are not stored in the same root directory as META-INF/persistence.xml, the discovery mechanism will miss them. -
8. Re: How to configure Hibernate console with entities in many
chawax Oct 21, 2008 3:19 AM (in response to chawax)Well, I made several files for development organization reasons : many development teams will work on the project and they will rely on common entities for standard needs. At the end, all these projects are merged into one jar (t4-core-all) which will contain all entities and one unique persistence.xml (and so with one unique persistence unit). Anyway, I will try to manually list classes in persistence.xml. Will it work too if I have many persistence.xml files in the classpath ?
-
9. Re: How to configure Hibernate console with entities in many
maxandersen Oct 22, 2008 6:31 PM (in response to chawax)chawax - only one persistence.xml will be used for one persistence unit; so that persistence.xml would need to be in the root of the entities you want scanned + list the classes that is "outside"