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

JPA实体在多个应用程序之间共享(Wildfly-Hibernate-Maven)

吕德惠
2023-03-14

有没有一种方法来配置包含在不同应用程序(战争或耳朵)中的各种persistence.xml,这些应用程序都使用包含所有实体的共享罐?

比如:

  deployments/
    |-ArchiviBase.war
      |-WEB-INF\classes\META-INF\persistence.xml
      |-WEB-INF\classes\META-INF\TipoAbitazione.hbm.xml
    |-Application2.war
      |-WEB-INF\classes\META-INF\persistence.xml
    |-Application3.war
      |-WEB-INF\classes\META-INF\persistence.xml
  lib/
    |-models.jar
      |- it\test\archiviBase\beans\TipoAbitazione.java

对于war中的所有文件(persistence.xml、hbm.xml和java类),映射工作正常,但我需要与所有应用程序共享java实体,因此我希望将它们移动到模型中。罐子

坚持不懈xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.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_2_0.xsd">
    <persistence-unit name="archiviBasePU">
        <jta-data-source>java:jboss/jdbc/myDataSource</jta-data-source>
        <properties>
            <property name="jboss.entity.manager.factory.jndi.name"
                            value="java:jboss/hibernate/app1SF" />
            <property name="jboss.entity.manager.jndi.name"
                            value="java:/hibernate/app1SF" />
            <property name="hibernate.generate_statistics" value="true" />
            <property name="hibernate.default_schema"
                            value="app_schema" />
            <property name="hibernate.show_sql" value="true" />
        </properties>
    </persistence-unit>
</persistence>

TipoAbitazione.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping auto-import="true"
    default-access="property" default-cascade="none" default-lazy="true">
    <class dynamic-insert="false" dynamic-update="false"
        mutable="true"
        name="it.test.app1.beans.TipoAbitazione"
        optimistic-lock="version" polymorphism="implicit"
        select-before-update="false" table="tipo_abitazione">
        <id column="tpab_codice" name="codice" type="java.lang.String">
            <generator class="assigned" />
        </id>
        <property column="tpab_descrizione" generated="never"
            lazy="false" length="100" name="descrizione" not-null="true"
            optimistic-lock="true" type="java.lang.String" unique="false" />
        <property column="tpab_flag_attivo" generated="never"
            lazy="false" length="1" name="attivo" optimistic-lock="true"
            type="java.lang.Boolean" unique="false" />
    </class>
</hibernate-mapping>

TipoAbitazione.java

package it.test.archiviBase.beans;

import java.io.Serializable;
 
public class TipoAbitazione implements Serializable {

    private static final long serialVersionUID = 1L;

    private String codice;
    private String descrizione;
    private Boolean attivo;

    public TipoAbitazione() {
    }

    public TipoAbitazione(String codice, String descrizione) {
        this.codice = codice;
        this.descrizione = descrizione;
    }

    public TipoAbitazione(String codice, String descrizione, Boolean attivo) {
        this.codice = codice;
        this.descrizione = descrizione;
        this.attivo = attivo;
    }

    public String getCodice() {
        return this.codice;
    }

    public void setCodice(String codice) {
        this.codice = codice;
    }

    public String getDescrizione() {
        return this.descrizione;
    }

    public void setDescrizione(String descrizione) {
        this.descrizione = descrizione;
    }

    public Boolean getAttivo() {
        return this.attivo;
    }

    public void setAttivo(Boolean attivo) {
        this.attivo = attivo;
    }
}

每个应用程序都应该使用自己的hbm定义自己的持久化单元。xml文件,但java实体都将包含在共享模型中。jar文件

这是我尝试部署war时出现的错误:

2021-03-25 15:20:46,411错误[org.jboss.as.controller.management-操作](外部管理请求线程-1)WFLYCTL0013:操作(添加)失败-地址:([(部署=

共有2个答案

卫嘉谊
2023-03-14

你必须把持久化。xml与加载的类位于同一个库中,如果您不想在持久性中显式列出它们的话。每个应用程序的xml。

慕容雅珺
2023-03-14
<!-- Define persistence unit -->
<persistence-unit name="archiviBasePU">
    ...
    <jar-file>models.jar</jar-file>
    ...
</persistence-unit>
 类似资料:
  • 问题内容: 我正在建立一个电子商务网站(基于shopify),并且使用多个小型angularjs应用程序来处理诸如快速购物车,收藏夹,过滤产品和其他一些较小物品的事情。我最初使用的是一个大型应用程序(具有路由和所有功能),但是当我没有完整的REST API时,这有点限制性。 我想在角度应用程序之间共享一些服务(购物车服务,所以我可以有一个快速添加按钮,它将反映在微型购物车等中),但我不确定最好的解

  • 我有一个使用Hibernate的Spring启动应用程序。我想运行该应用程序的多个实例,连接到同一个数据库。我不小心发现infinispan作为二级缓存。我想将infinispan实现为Hibernate的二级缓存。现在,如果我启动这个相同的Spring启动应用程序的多个实例,所有不同实例的infinispan缓存会相互共享吗?

  • 问题内容: 我一次运行2个单独的Java应用程序。(两个单独的javaw.exe)在它们运行时,我需要在它们之间共享一个对象。 没有永久存储的最简单方法是什么? 问题答案: 对象及其实例变量可以在Java程序的线程之间共享,这是非常简单的任务。 如果您需要在两个程序之间共享对象(例如它的对象)而没有数据存储,那么下一个选择将是使用RMI套接字通信或Java消息传递服务。

  • 背景:我正在并行运行自动化测试。使用pom.xml中的分叉,多个浏览器在相同数量的线程中启动,即1个浏览器是1个线程。 中的下面插件创建了与线程(fork)计数相等数量的。 所有这些类都同时并行执行。因此,似乎每当我创建或时,每个线程都会创建自己的这些,因此跨多个线程共享变量的概念是不起作用的。 我只想让一个线程访问“准备测试数据”函数,并将<code>标志 我正在按照教程https://www.

  • 问题内容: 我想像这样在多个线程之间共享一个变量: 我想在主线程和帮助线程之间共享,这是我创建的两个不同的Java类。有什么办法吗?谢谢! 问题答案: 二者并可以参照包含该变量的类。 然后,可以使该变量为 volatile ,这意味着 对该变量的更改在两个线程中立即可见。 有关更多信息,请参见本文。 易变变量 共享已同步的可见性功能,但不共享原子性功能。这意味着线程将自动 查看volatile变量

  • 问题内容: 该模块的文档显示了如何将队列传递给以开头的进程。但是,如何与开始的异步工作进程共享队列?我不需要动态加入或其他任何方式,而只是工人(反复)将其结果报告给基地的一种方法。 失败的原因是: 。我理解这意味着什么,并且我理解继承的建议,而不是要求进行酸洗/酸洗(以及所有Windows特殊限制)。但如何 做 我通过队列的方式,作品?我找不到一个示例,并且我尝试了多种失败的替代方法。请帮忙? 问