必须在 ConnectionDriverName 属性中指定 JDBC Driver 或 DataSource 类名“如何解决?”

2024-03-14

概述:这是我的第一个关于 Websphere 7 Server & JPA 1.0 & EJB & Derby Database 的教程。

第一:我的数据源名称是EJB3BANK,我的目标数据库是SHOP。

第二:这个持久性.xml file

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.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_1_0.xsd">
<persistence-unit name="ShopJPA" transaction-type="JTA">
    <jta-data-source>jdbc/EJB3BANK</jta-data-source>
    <non-jta-data-source>jdbc/EJB3BANK</non-jta-data-source>
    <properties>
        <property name="openjpa.jdbc.Schema" value="SHOP" />
    </properties>
</persistence-unit>
</persistence> 

第三:这部分代码Item实体类

@Entity
@Table(schema = "SHOP", name = "ITEM")
@NamedQuery(name = "getItem", query = "SELECT i FROM Item i")
public class Item{...}

第四:这里是商务舱购物车Bean这是问题的开始

@Stateful
CartBean implements Cart{
....
....
public List<Item> getItems() {      
javax.persistence.Query query = em.createNamedQuery("getItem");//the problem here
return query.getResultList();
}
}

这是错误消息:必须在 ConnectionDriverName 属性中指定 JDBC 驱动程序或 DataSource 类名。 如何解决这个问题?


如果您通过 JNDI 名称引用数据源,则不需要使用 openjpa.ConnectionDriverName 属性。

导致此问题的一个可能原因是 persistence.xml 位于错误的位置。该文件必须位于[类上下文的根目录]/META-INF。对于 .war 文件,内容应类似于:

(foo.war)
WEB-INF/classes/META-INF/persistence.xml
WEB-INF/classes/com/foo123/jpa/Project.class
WEB-INF/web.xml
index.jsp

对于打包在 .war 文件中的库 .jar 文件:

(foo.war)
WEB-INF/lib/my-library.jar
WEB-INF/web.xml
index.jsp

(my-library.jar)
META-INF/persistence.xml
com/foo123/jpa/Project.class
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

必须在 ConnectionDriverName 属性中指定 JDBC Driver 或 DataSource 类名“如何解决?” 的相关文章

随机推荐