当前位置: 首页 > 面试题库 >

如何为JPA- Hibernate定义非JTA数据源?org.hibernate.connection.DatasourceConnectionProvider- 找不到数据源:

常朗
2023-03-14
问题内容

我正在尝试使用Hibernate作为提供程序将Web应用程序的JDBC代码更改为JPA。我正在使用Eclipse
IDE。在那我已经定义了一个MySQL数据源。我在persistence.xml中添加了它。但是,我收到以下错误。

6640 [30289364@qtp-7494106-7] ERROR org.hibernate.connection.DatasourceConnectionProvider  - Could not find datasource: tamSql
javax.naming.NameNotFoundException; remaining name 'tamSql'

我的persistence.xml看起来像,

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" 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">
<persistence-unit name="ExpensePersistentUnit" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<non-jta-data-source>tamSql</non-jta-data-source>
    <class>com.pricar.JPAInteg.Role</class>
    <class>com.pricar.JPAInteg.User</class>
    <class>com.pricar.JPAInteg.Userdetail</class>
    <class>com.pricar.JPAInteg.Category</class>
    <class>com.pricar.JPAInteg.Expens</class>
    <class>com.pricar.JPAInteg.Leavetable</class>
    <class>com.pricar.JPAInteg.Permissiontoken</class>
    <class>com.pricar.JPAInteg.Roletokenassociation</class>
    <class>com.pricar.JPAInteg.UserPK</class>
<properties>
    <property name="hibernate.connection.url" value="jdbc:mysql://localhost/officemgmt"/>
    <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"></property>
    <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
    <property name="hibernate.connection.password" value="1234"/>
    <property name="hibernate.connection.username" value="root"/>
    <property name="hibernate.hbm2ddl.auto" value="update"/>
    <property name="hibernate.show_sql" value="true"/>

</properties>

有什么建议么!!!提前致谢!


问题答案:

<non-jta-data-source>在中配置数据源时,您不需要<properties><non-jta-data- source>在应用程序服务器配置中配置数据源并通过JNDI获取数据源时,需要使用。



 类似资料:
  • Spring boot版本1.5.3

  • 问题内容: 我试图将hibernate实体管理器与mysql和glassfish一起使用。尝试使用JTA数据源时出现以下错误: 这是我配置persistence.xml的方法 但是,当我配置非jta数据源时,它可以正常工作 很好,但是我真的很想使用: 代替: 我是否在hibernate配置中缺少某些东西,或者甚至可以使用JTA数据源? 问题答案: 在您的配置中,默认情况下使用容器管理的事务。在这种

  • 问题内容: 我们的应用程序当前使用的数据源是在JBoss standalone.xml中定义的,基本上我们需要在应用程序而不是容器中定义它。我们当前的设置是; application-context.xml; persistance.xml: datasource.xml: 基本上我想要的只是生产线 从datasource.xml读取而不是转到容器(JBoss)。看起来似乎很简单,但是在阅读了一些

  • 我使用的是Spring Boot MVC,Spring的在数据源配置之前被调用,数据源配置加载到中。 总是首先被调用,因此从来没有为Autowed定义过bean。 我尝试了从到的所有方法。我找不到一个像样的解释。但是我需要在数据源运行WebSecurity之前为它创建一个Bean

  • 编辑: 首先,我要感谢弗拉德·米哈尔塞亚的帮助。事实上,在Hibernate4中,jboss 9重写事务工厂类和管理器查找类是没有意义的。为了将数据提交到数据库,正如Vlad所说,您只需要: 使用 EJB:有一件事你必须小心,那就是你正确地使用 ejb3 事务。默认的事务绑定上下文是@Nonbinding因此您的事务不会回滚,因为您需要提供您的事务将回滚的异常,这是有道理的。 如果希望回滚所有异常

  • 我对冬眠很陌生,所以我的问题对你来说很明显。我在H2控制台用3个表(data.mv.db)创建了数据库,插入一些值,然后将其复制到项目路径中的数据库文件夹中。现在我试图阅读其中一个测试,但总是有错误,即表不存在。我试着给连接url添加一些属性,比如连接延迟或者不把字母改成大写,但仍然是一样的。 错误: 我试过编辑配置。所以我补充: 并使数据库为空。奇怪的是,在H2控制台打开后,Java创建的数据库