所以这就是我想要实现的目标: 使用嵌入式Derby的JPA实现Java App。一旦这个工作,我计划使用Spark(使用Jetty Server)和Angular js。
这些是我正在使用的工具/框架
Eclipse IDE(Luna)
Maven Build系统
JPA实现(EclipseLink)
用于数据库的嵌入式Derby
Spark with Embedded Jetty服务器。
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>
我的主类中的代码段
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文件位于类路径中。
我不确定这是否可行,但我找不到任何做过这样的教程或答案。
感谢任何帮助。
提前致谢..
答案 0 :(得分:0)
确保您的persistence.xml文件位于类(或任何您的构建目录)/ META-INF 。