java - 使用 hibernate 5.0.2 和 glassfish4.0

标签 java hibernate jpa

我正在处理 persistence.xml 的配置。我认为我写的属性是正确的,但是必须有一个原因,为什么我的表不是在 MYSQL 中创建的。

    <?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 或 hibernate 的东西。

这是我的 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> 

希望有人能帮助我。

最佳答案

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>

如果除了“我过去使用过的”之外没有其他具体原因要使用 Hibernate,请考虑只使用与容器捆绑的内容。 Glassfish 经过测试可以与 EclipseLink 一起使用,如果您将 Hibernate 强制纳入技术堆栈并遇到兼容性问题,您将很难获得相关帮助。

如果有的话,它也会使您的应用程序变得更轻,因为您不需要在应用程序中部署一堆 Hibernate 类。

关于java - 使用 hibernate 5.0.2 和 glassfish4.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33436655/

相关文章:

Java,可见性和无限循环发生

spring - 无法为数据库添加 SSL 支持

java - 我可以在接口(interface)上使用@MappedSuperclass 注解吗?

Java spring 数据库应用程序不会退出对 org.enHydra.jdbc.pool.PoolKeeper 的引用仍然处于 Activity 状态,为什么?

java - @OneToOne 和 @JoinColumn 上的映射实体为 null

java - 如何制作通用的jpa存储库?我应该这样做吗?为什么?

java - maven - 在构建时弹出窗口请求许可

java - 静态方法不能访问类的实例成员

Java J面板布局

java - Hibernate:持久化对象