为了账号安全,请及时绑定邮箱和手机立即绑定

JndiException:在独立应用程序中解析 JNDI 名称时出错

JndiException:在独立应用程序中解析 JNDI 名称时出错

www说 2023-08-16 16:14:30
我正在尝试在没有任何应用程序服务器的独立应用程序中使用 hibernate 和 h2 数据库。另外,我可以通过一些数据库工具连接到 h2 数据库(使用文件模式进行测试)。我已将我的项目设置为 Maven 项目,包括以下依赖项:<dependency>        <groupId>com.h2database</groupId>        <artifactId>h2</artifactId>        <version>1.4.199</version></dependency><dependency>    <groupId>org.hibernate</groupId>    <artifactId>hibernate-entitymanager</artifactId>    <version>5.4.4.Final</version></dependency><dependency>    <groupId>org.hibernate</groupId>    <artifactId>hibernate-core</artifactId>    <version>5.4.4.Final</version></dependency><dependency>    <groupId>org.springframework</groupId>    <artifactId>spring-context</artifactId>    <version>5.1.9.RELEASE</version></dependency>persistence.xml(资源/META-INF/persistence.xml)<?xml version="1.0" encoding="UTF-8"?><persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">    <persistence-unit name="sow-quest-unit">        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>        <!--        <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>-->        <!--        <jta-data-source>jdbc:h2:file:D:\Projects\SecretWoods\db</jta-data-source>-->        </properties>    </persistence-unit></persistence>
查看完整描述

1 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

好像不能用EntityManager吧?!


我现在尝试以下操作:删除persitence.xml,编辑hibernate.cfg.xml(添加以下内容):


<property name="current_session_context_class">thread</property>


<property name="hibernate.dbcp.initialSize">5</property>

<property name="hibernate.dbcp.maxTotal">20</property>

<property name="hibernate.dbcp.maxIdle">10</property>

<property name="hibernate.dbcp.minIdle">5</property>

<property name="hibernate.dbcp.maxWaitMillis">-1</property>


<mapping class="com.wolfo.quest.Quest" />

<mapping class="com.wolfo.quest.QAnswer" />

<mapping class="com.wolfo.quest.QQuestion" />

<mapping class="com.wolfo.quest.QText" />

之后我写了一些课程(在示例中找到):


private static StandardServiceRegistry registry;

private static SessionFactory sessionFactory;


public static SessionFactory getSessionFactory() {

    if (sessionFactory == null) {

        try {

            // Create registry

            registry = new StandardServiceRegistryBuilder().configure().build();


            // Create MetadataSources

            MetadataSources sources = new MetadataSources(registry);


            // Create Metadata

            Metadata metadata = sources.getMetadataBuilder().build();


            // Create SessionFactory

            sessionFactory = metadata.getSessionFactoryBuilder().build();


        } catch (Exception e) {

            e.printStackTrace();

            if (registry != null) {

                StandardServiceRegistryBuilder.destroy(registry);

            }

        }

    }

    return sessionFactory;

}


public static void shutdown() {

    if (registry != null) {

        StandardServiceRegistryBuilder.destroy(registry);

    }

}

它现在可以工作了,但我想我可以使用 EntityManager?!


查看完整回答
反对 回复 2023-08-16
  • 1 回答
  • 0 关注
  • 134 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号