java persistence.xml_java – Persistence对象无法从persistence.xml中找到持久性单元

java persistence.xml_java – Persistence对象无法从persistence.xml中找到持久性单元环境:Windows7,NetBean6.9(包括GlassFishv3,JavaEE6),MySQL服务器我已经在MySQL数据库中创建了表,并通过右键单击项目并选择“从数据库创建实体”来使用NetBean的功能(对不起,如果措辞错误,因为我的NetBean是日语)这将创建实体.现在我去测试我是否可以通过实体管理器访问数据库.Tmp.javapackagelocal.test.tmp…

环境:

Windows 7,NetBean 6.9(包括GlassFish v3,

Java EE 6),

MySQL服务器

我已经在MySQL数据库中创建了表,并通过右键单击项目并选择“从数据库创建实体”来使用NetBean的功能(对不起,如果措辞错误,因为我的NetBean是日语)

这将创建实体.

现在我去测试我是否可以通过实体管理器访问数据库.

Tmp.java

package local.test.tmp;

import Resources.Users;

import javax.persistence.EntityManagerFactory;

import javax.persistence.Persistence;

import javax.persistence.EntityManager;

import javax.persistence.Query;

import java.util.List;

/**

*

* @author m-t

*/

public class Tmp {

private static EntityManagerFactory factory;

private static final String WEB_PU = “WebApplication1PU”;

public static void main(String args[]) {

factory = Persistence.createEntityManagerFactory(WEB_PU);

EntityManager em = factory.createEntityManager();

//read existing entries and write to concole

Query q = em.createQuery(“select * from users”);

List userList = q.getResultList();

for(Users u : userList) {

System.out.println(u);

}

}

}

persistence.xml中

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”>

masatoJNDI

当我运行Tmp.java时,我可以看到它失败了:

factory = Persistence.createEntityManagerFactory(WEB_PU);

错误消息:

Exception in thread “main” javax.persistence.PersistenceException: No Persistence

provider for EntityManager named WebApplication1PU

at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:84)

at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)

at local.test.tmp.Tmp.main(Tmp.java:24)

我已经检查了测试代码中的持久性单元“WebApplication1PU”与persistence.xml匹配的拼写,它是正确的.

persistence.xml位于…它是日语我不知道怎么用英语:(

让我尝试..

project

|——-web page

|——-test package

|——-lib

|——-enterprise bean

|——-*** file //blah file, I can’t translate..

|—–MNIFEST.MF

|—–faces-cofig.xml

|—–persistence.xml //HERE!!

由于失败是在Factory尝试在persistence.xml中找到持久性单元的开始,我完全感到困惑.有什么我应该验证的吗?

如果您需要更多说明,请告诉我.

UPDATE

我已经尝试过建议可能的解决方案,但没有运气..返回相同的错误消息.

是的,netbean 6.9默认提供商是toplink.

我做了什么:

添加了persistence.xml的提供程序

oracle.toplink.essentials.PersistenceProvider

masatoJNDI

似乎大多数人都对我的情况有所成功.我现在开始认为可能存在运行测试文件或文件所在位置的问题?

我从netbean执行的Tmp.java位于:

project

|——web page

|——source package

| |———–local.test.session

|———–local.test.tmp

|——————Tmp.java //HERE

我不确定它是否重要.

更新2

我已将包含toplink-essential.jar和toplink-essential-agent.jar的toplink lib添加到我项目的lib目录中,现在我在原始版本的基础上收到了新的错误,但我相信我越来越近了.

看起来像persistence.xml中的版本属性有问题…… ???

Exception in thread “main” javax.persistence.PersistenceException: No Persistence provider for EntityManager named WebApplication1PU: Provider named oracle.toplink.essentials.PersistenceProvider threw unexpected exception at create EntityManagerFactory:

oracle.toplink.essentials.exceptions.PersistenceUnitLoadingException

Local Exception Stack:

Exception [TOPLINK-30005] (Oracle TopLink Essentials – 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.PersistenceUnitLoadingException

Exception Description: An exception was thrown while searching for persistence archives with ClassLoader: sun.misc.Launcher$AppClassLoader@f6a746

Internal Exception: Exception [TOPLINK-30004] (Oracle TopLink Essentials – 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.PersistenceUnitLoadingException

Exception Description: An exception was thrown while processing persistence.xml from URL: file:/C:/Users/m-takayashiki/Documents/NetBeansProjects/NoJSF/build/web/WEB-INF/classes/

Internal Exception:

(1. cvc-complex-type.3.1: Value ‘2.0’ of attribute ‘version’ of element ‘persistence’ is not valid with respect to the corresponding attribute use. Attribute ‘version’ has a fixed value of ‘1.0’.)

at oracle.toplink.essentials.exceptions.PersistenceUnitLoadingException.exceptionSearchingForPersistenceResources(PersistenceUnitLoadingException.java:143)

at oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.createEntityManagerFactory(EntityManagerFactoryProvider.java:169)

at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:110)

at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:83)

at local.test.tmp.Tmp.main(Tmp.java:24)

更新3

经过一些研究,找出版本号需要1.0兼容所以我应用了修复并得到了新的错误.

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”>

oracle.toplink.essentials.PersistenceProvider

masatoJNDI

local.test.session.Addresses

local.test.session.Users

这很奇怪,因为我已在上面的persistence.xml中指定了类:(

Exception in thread “main” javax.persistence.PersistenceException: Exception [TOPLINK-7060]

(Oracle TopLink Essentials – 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.ValidationException

Exception Description: Cannot acquire data source [masatoJNDI].

Internal Exception: javax.naming.NoInitialContextException: Need to specify class name in

environment or system property, or as an applet parameter, or in an application resource

file: java.naming.factory.initial

更新4

我不认为这被称为“已解决”,但经过长时间的尝试,我决定只在Web应用程序中运行我的测试代码,而不是从netbean单独运行.我必须自己创建web.xml,因为GlassFish不提供它. (我看到了sun-web.xml,但它不是替换)然后创建了servlet,在web.xml中定义了映射,并将我的测试代码片段添加到servlet并在浏览器上尝试了.它工作,成功从数据库中获取数据.

我想知道当我尝试从Netbean运行Tmp.java(我的测试文件)时它无法工作的原因是什么…

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/36446.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注