【发布时间】:2015-04-21 05:11:27
【问题描述】:
这就是我想要实现的目标:
使用嵌入式 Derby 实现 JPA 的 Java 应用程序。一旦这个工作正常,我就计划拥有 Spark(使用 Jetty 服务器)和 Angular js。
这些是我正在使用的工具/框架
Eclipse IDE (Luna)
Maven 构建系统
JPA 实现 (EclipseLink)
用于数据库的嵌入式 Derby
带有嵌入式 Jetty 服务器的 Spark。
Angular JS
我使用 Derby Embedded Driver 和 db 属性定义了 persistence.xml。 在 Main 类中,我使用 EntityManger 来获取 EM。我还创建了 EmbeddedDerby 的新实例来启动引擎。
但是当我运行应用程序时,它显示“实体管理器没有持久性提供程序持久性”,名为 testSparkJettyDerby”
这是我的 persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" 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">
<persistence-unit name="testSparkJettyDerby" transaction-type="RESOURCE_LOCAL">
<class>model.MyUser</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:derby:sample;create=true"/>
<property name="javax.persistence.jdbc.user" value="user"/>
<property name="javax.persistence.jdbc.password" value="xxxx"/>
<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver"/>
</properties>
</persistence-unit>
我的主类中的代码 sn-p
createConnection();
// TODO Auto-generated method stub
factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
EntityManager em = factory.createEntityManager();
private static void createConnection()
{
try
{
Class.forName("org.eclipse.persistence.jpa.PersistenceProvider");
Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
//Get a connection
conn = DriverManager.getConnection(dbURL);
if(conn != null) {
System.out.println("Connected...");
}
}
catch (Exception except)
{
except.printStackTrace();
}
}
我的 derby jar 文件位于类路径中。
我不确定这是否可能,但我找不到任何做过类似事情的教程或答案。
感谢任何帮助。
提前谢谢..
【问题讨论】:
-
是的,可以设置 EclipseLink 和嵌入式 Derby。检查此post。尽管它使用的是 GlassFish 而不是 Jetty,但它证明了无论如何都是可能的。我希望它有所帮助。
标签: java jakarta-ee jpa eclipselink derby