Min*_*ine 7 jpa java-ee websphere-7 ejb-3.0
概述:这是我的第一个Websphere 7 Server&JPA 1.0&EJB&Derby Database的教程.
第一:我的数据源名称是EJB3BANK,我的目标数据库是SHOP.
第二:这是persistence.xml文件
<?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>
Run Code Online (Sandbox Code Playgroud)
第三:Item实体Class的部分代码
@Entity
@Table(schema = "SHOP", name = "ITEM")
@NamedQuery(name = "getItem", query = "SELECT i FROM Item i")
public class Item{...}
Run Code Online (Sandbox Code Playgroud)
第四:这里是业务类CartBean,这里是问题的开始
@Stateful
CartBean implements Cart{
....
....
public List<Item> getItems() {
javax.persistence.Query query = em.createNamedQuery("getItem");//the problem here
return query.getResultList();
}
}
Run Code Online (Sandbox Code Playgroud)
这是错误消息:必须在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
Run Code Online (Sandbox Code Playgroud)
对于.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
Run Code Online (Sandbox Code Playgroud)
我认为,您想要做的是通过在 persistence.xml 中声明它来定义一个新的数据源,并且它缺少一个属性,例如<property name="openjpa.ConnectionDriverName" value="org.apache.derby.jdbc.EmbeddedDriver" />
但是,当您使用 Websphere 时,我建议您通过 Webspheres 管理控制台(Web 界面)创建数据源。在“资源”->“JDBC”下,您首先要创建一个JDBC 提供程序并告诉它使用 Derby 驱动程序。之后,您将使用此提供程序创建一个新的数据源。您可以在那里定义 JNDI 绑定。将其设置为jdbc/EJB3BANK。您当前的 persistence.xml 应该可以正常工作。
| 归档时间: |
|
| 查看次数: |
33362 次 |
| 最近记录: |