2015-10-30 4 views
0

Я имею дело с конфигурацией моего persistence.xml. Я думаю, что я правильно написал свойства, но должна быть причина, почему мои таблицы не созданы в MYSQL.Использование hibernate 5.0.2 с glassfish4.0

<?xml version="1.0" encoding="UTF-8"?> 

    <persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence 
    http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd" 
    version="2.1"> 
<persistence-unit name="primary" transaction-type="JTA"> 
    <jta-data-source>jdbc/__MyProject</jta-data-source> 


     <property name="hibernate.show_sql" value="true" /> 
     <property name="hibernate.format_sql" value="true" /> 
     <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /> 
     <property name="hibernate.hbm2ddl.auto" value="create-drop" /> 


      <!-- needed when 'transaction-type="JTA"' --> 
      <property name="hibernate.transaction.jta.platform" 
      value="org.hibernate.service.jta.platform.internal.SunOneJtaPlatform" /> 

    </properties> 

</persistence-unit> 
</persistence> 

Я также пробовал обновлять, проверять и создавать. Когда я использую:

<property name="eclipselink.ddl-generation" value="create-tables"/> 

таблицы созданы, но я действительно хочу знать, если я просто забыл установить что-то относительно GlassFish или спящий режим.

Вот ahortcut из моего pom.xml

<dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>5.0.2.Final</version> 
    </dependency> 
    <dependency> --> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>5.0.2.Final</version> 
    </dependency> 

Я надеюсь, что кто-то может мне помочь.

+1

им жаль, я не понимаю вопрос? вы сказали, что не можете создать ddl автоматически, но после добавления '' он работает? – javaguest

+0

Что будет означать, что стандартный EclipseLink из Glassfish используется, а не Hibernate. Это имеет смысл, поскольку Hibernate не настроен как поставщик сохранения. – Gimby

+0

Прошу прощения. Это было не очень хорошо объяснено. Согласно книге, с которой я работаю, мне нужно работать в спящем режиме. Но в этой книге они используют сервер wildfly, поэтому я думаю, что Gimby прав, и я должен придерживаться eckipselink, поскольку я использую стеклянную рыбку. – Melle

ответ

2

Glassfish по умолчанию поставляется с EclipseLink в качестве поставщика сохранения. Таким образом, если вы должны использовать другого провайдера, вам придется вручную его настроить.

<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_2_0.xsd" 
      version="2.1"> 
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> <!-- this --> 
... 
</persistence> 

Если у вас нет особых причин использовать спящий режим, кроме «это то, что я использовал в прошлом», считают просто придерживаться того, что в комплекте с контейнером. Glassfish тестируется для работы с EclipseLink, если вы вынуждаете Hibernate в стек технологии и сталкиваетесь с проблемами совместимости, вам будет сложнее получить помощь в этом.

Во всяком случае, это делает ваше приложение более легким, так как вам не нужно развертывать кучу классов Hibernate с вашим приложением.

+0

в версии 5, 'org.hibernate.ejb.HibernatePersistence' устарел (см. Файл README в hibernate-entitymanager lib (который тоже развращен!). Теперь это' org.hibernate.jpa.HibernatePersistenceProvider'. – slim

+0

@slim it был изменен – Gimby

Смежные вопросы