当前位置: 首页 > 知识库问答 >
问题:

在简单jpa项目中映射类

莘聪
2023-03-14

为了配置一个简单的JPA项目,我使用了Wildfly 8,数据源是在单机版中配置的。xml。

            <datasource jta="true" jndi-name="java:jboss/datasources/postgresql" pool-name="postgreSql" enabled="true" use-ccm="true">
                <connection-url>jdbc:postgresql://localhost:5432/sell</connection-url>
                <driver-class>org.postgresql.Driver</driver-class>
                <driver>postgres</driver>
                <security>
                    <user-name>postgres</user-name>
                    <password>sell</password>
                </security>
            </datasource>

在Web项目中,我配置了持久性。像这样的xml文件

http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"

<persistence-unit name="sellAppPersistenceUnit"
    transaction-type="RESOURCE_LOCAL">              
    <jta-data-source>java:jboss/datasources/postgresql</jta-data-source>
    <class>br.com.sell.app.orm.Usuario</class>
</persistence-unit>

但是,当我添加br时。通用域名格式。卖应用程序。奥姆。通常,我在项目启动时出错,该错误表示存在hibernate问题org/hibernate/proxy/HibernateProxy,但我不使用hibernate。

13:17:50,738 ERROR [org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer] (ServerService Thread Pool -- 58) HHH000142: Javassist Enhancement failed: br.com.sell.app.orm.Usuario: java.lang.RuntimeException: by java.lang.NoClassDefFoundError: org/hibernate/proxy/HibernateProxy
    at javassist.util.proxy.ProxyFactory.createClass3(ProxyFactory.java:515)
    at javassist.util.proxy.ProxyFactory.createClass2(ProxyFactory.java:492)
    at javassist.util.proxy.ProxyFactory.createClass1(ProxyFactory.java:428)
    at javassist.util.proxy.ProxyFactory.createClass(ProxyFactory.java:400)
    at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.getProxyFactory(JavassistLazyInitializer.java:162)
    at org.hibernate.proxy.pojo.javassist.JavassistProxyFactory.postInstantiate(JavassistProxyFactory.java:67)
    at org.hibernate.tuple.entity.PojoEntityTuplizer.buildProxyFactory(PojoEntityTuplizer.java:224)
    at org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:212)
    at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:80)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:135)
    at org.hibernate.tuple.entity.EntityTuplizerFactory.constructDefaultTuplizer(EntityTuplizerFactory.java:188)
    at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:403)
    at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:520)
    at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:148)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)

为什么我可以解决这个问题?

pom.xml文件:

http://maven.apache.org/xsd/maven-4.0.0.xsd"

<modules>
    <module>sellAppEndpoint</module>
    <module>sellAppWeb</module>
    <module>sellAppCors</module>
    <module>sellAppDto</module>
    <module>sellAppOrm</module>
    <module>sellAppJpa</module>
</modules>

<dependencies>
    <!-- para importar pacotes javax.* para o REST -->
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>7.0</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>3.3.0.SP1</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>5.0.0.Final</version>
    </dependency>

</dependencies>

共有1个答案

耿永寿
2023-03-14

您的问题似乎是由于声明了不一致的依赖关系造成的——版本5.0.0中的hibernate entitymanager需要hibernate core 5.0.0,但在版本3.3.0中强制使用hibernate core。SP1。课程org。冬眠代理HibernateProxy在3.3.0版中不存在。SP1。当hibernate entitymanager声明对hibernate core的可传递依赖时,您只需删除对hibernate core的依赖即可。

此外,Wildfly 8已经包含hibernate(4.3版),因为它必须根据规范提供JavaEE功能。您可以在Wildfly上使用hibernate,这更标准,除非您不需要hibernate 5.0的特殊功能。在这种情况下,还可以从pom.xml中删除hibernate-entityManager依赖项,您的代码应该仍然可以工作。

 类似资料:
  • 我声明了一个订单实体。它由日期、客户和LineItem对象列表组成。 行项目具有产品和数量的属性。我正试图模拟与JPA的这种关系。每个行项目都有ID似乎不正确,但我不确定如何在JPA中表达行项目和订单之间的关系: LineItem类 我认为行项目的主键应该是产品id、数量和订单id的组合,尽管我知道我没有对此建模。

  • 我有2个实体:Field和ViewOptions 省略与问题无关的字段和方法

  • 我有4张桌子: 库存(库存ID、可用数量) 一个客户可以有多个订单,而一个订单由多个orderDetails项目组成。我正在尝试将库存项目存储在由库存项目和数量整数组成的映射中。 当我尝试以这种方式持久化它时,第一个库存项目将以1的orderID添加到Order详细信息表中。但是下一个是使用2的orderID插入的(不存在)。 有什么帮助吗?

  • 问题内容: 我一直在研究一个非常简单的JPA示例,并试图将其调整为现有数据库。但是我无法克服这个错误。(下面。)这只是我没看到的一些简单的事情。 在下面的DocumentManager类中(一个简单的servlet,因为这是我的目标),它做了两件事: 插入一行 返回所有行 插入效果很好-一切都很好。问题出在检索上。我尝试了各种参数值,但没有走运,并且尝试了各种更复杂的类注释(如列类型),但都没有成

  • 我试图建立一个简单的SpringMVC项目。 我创建了Web应用程序项目,然后添加了Spring和公共日志库。 还有这个网站。xml文件 这是HelloWebservlet。xml 然后我创建了java类(HelloContoller.java)com.tutorialspoint包 然后我在WEB-INF/JSP/hello中创建了JSP页面。jsp 我正在处理服务器glassfish,当我运行

  • 主要内容:集合映射实例,程序输出结果是一个接口,其中一个唯一键与每个值对象相关联。 因此,搜索,更新,删除等操作都是基于键来进行的。 完整的项目目录结构如下所示 - 集合映射实例 在这个例子中,我们将一个对象嵌入到一个实体类中,并将其定义为一个集合类型 - 。 这个例子包含以下步骤 - 第1步: 在包下创建一个实体类,这个类包含员工, 和嵌入对象(员工地址)。注解 表示嵌入对象。 文件:Employee.java 的代码如下所示 -