【问题标题】:Spring data cdi multiple persistence unit errorSpring数据cdi多个持久化单元错误
【发布时间】:2018-04-27 11:57:45
【问题描述】:

我在 jee(Jboss 6.0.1) 中有一个使用 jsf 和 ejbs 的项目。

我使用带有 cdi 和一个持久性单元的 spring 数据没有任何问题。 将持久化单元注入spring数据的配置。

public class CdiConfig {
    @Produces
    @Dependent
    @PersistenceContext(unitName = "simje")
    private EntityManager entityManager;

但现在我的 persistence.xml(“sigroUnit”)中有另一个持久性单元。所以当我尝试将我的应用程序部署到 jboss 时,我得到了

未指定持久性单元名称,有 2 个持久性 应用程序部署“simje.ear”中的单元定义

我确实尝试为其他持久性单元创建相同的配置。

    @Produces
    @Dependent
    @PersistenceContext(unitName = "sigro")
    private EntityManager entityManagerSigro;

所以我仍然收到来自 jboss 的错误。

未指定持久性单元名称,有 2 个持久性 应用程序部署“simje.ear”中的单元定义

有人知道如何解决这个问题吗?

我的坚持

   <persistence 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"
    version="2.0">
    <persistence-unit name="simje">
        <jta-data-source>java:/SimjeDS</jta-data-source>


        <!-- Entidades mapeados para o projeto devem ser adicionadas com o fullname -->
        <!-- <class>br.gov.cef.projeto.domain.enidade.Entidade</class> -->

        <!-- Entidades do modulo SIICO -->
        <class>br.gov.cef.siico.domain.endereco.Localidade</class>
        <class>br.gov.cef.siico.domain.endereco.MunicipioIbge</class>
        <class>br.gov.cef.siico.domain.endereco.MunicipioIbgePK</class>
        <class>br.gov.cef.siico.domain.endereco.Regiao</class>
        <class>br.gov.cef.siico.domain.endereco.Uf</class>
        <class>br.gov.cef.siico.domain.unidade.Unidade</class>
        <class>br.gov.cef.siico.domain.unidade.VinculoUnidade</class>
        <class>br.gov.cef.siico.domain.unidade.TipoUnidade</class>
        <class>br.gov.cef.siico.domain.unidade.ResponsavelUnidadeCaixa</class>
        <class>br.gov.cef.siico.domain.empregado.EmpregadoCaixa</class>
        <class>br.gov.cef.siico.domain.empregado.Funcao</class>
        <class>br.gov.cef.siico.domain.empregado.Cargo</class>

        <!-- Entidades SIMJE -->
        <class>br.gov.simje.domain.Tribunal</class>
        <class>br.gov.simje.domain.Certificado</class>
        <class>br.gov.simje.domain.Contato</class>
        <class>br.gov.simje.domain.ParametroSistema</class>

        <exclude-unlisted-classes>false</exclude-unlisted-classes>

        <properties>
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.format_sql" value="true" />
            <property name="hibernate.connection.driver_class" value="org.postgresql.Driver" />
            <property name="hibernate.hbm2ddl.auto" value="validate" />
            <property name="hibernate.jdbc.batch_size" value="600" />
            <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
            <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider" />
            <property name="hibernate.default_schema" value="pcpsm001" />
        </properties>
    </persistence-unit>


<persistence-unit name="sigro">
        <jta-data-source>java:/SigroDS</jta-data-source>

        <!-- Entidades SIGRO -->
        <class>br.gov.cef.sigro.domain.linhanegocio.LinhaNegocio</class>
        <class>br.gov.cef.sigro.domain.linhanegocio.LinhaNegocioPrincipal</class>
        <class>br.gov.cef.sigro.domain.linhanegocio.LinhaNegocioPrincipalPK</class>
        <class>br.gov.cef.sigro.domain.unidade.ResponsabilidadeUnidade</class>
        <class>br.gov.cef.sigro.domain.siico.UnidadeSigro</class>
        <class>br.gov.cef.sigro.domain.siico.GestaoProdutoSigro</class>
        <class>br.gov.cef.sigro.domain.siico.ProdutoSigro</class>
        <class>br.gov.cef.sigro.domain.informacao.FonteInformacao</class>
        <class>br.gov.cef.sigro.domain.perda.OrigemPerda</class>
        <class>br.gov.cef.sigro.domain.risco.CategoriaRisco</class>
        <class>br.gov.cef.sigro.domain.provisao.GrupoProvisao</class>
        <class>br.gov.cef.sigro.domain.macroprocesso.MacroProcesso</class>
        <class>br.gov.cef.sigro.domain.tipogestao.TipoGestao</class>
        <class>br.gov.cef.sigro.domain.provisao.IndicadorSucessoAcao</class>
        <class>br.gov.cef.sigro.domain.perda.ItemRegistroPerda</class>
        <class>br.gov.cef.sigro.domain.lancamento.LancamentoContabilClassificado</class>
        <class>br.gov.cef.sigro.domain.lancamento.LancamentoContabilPendenteAprovacao</class>
        <class>br.gov.cef.sigro.domain.lancamento.AutorizarLancamentoForaPrazo</class>
        <class>br.gov.cef.sigro.domain.evento.EventoContabil</class>
        <class>br.gov.cef.sigro.domain.macroprocesso.MacroProcessoGestao</class>
        <class>br.gov.cef.sigro.domain.unidade.UnidadeTipoGestao</class>
        <class>br.gov.cef.sigro.domain.provisao.RegistroProvisao</class>
        <class>br.gov.cef.sigro.domain.provisao.TipoLancamentoProvisao</class>
        <class>br.gov.cef.sigro.domain.planoconta.PlanoConta</class>
        <class>br.gov.cef.sigro.domain.risco.EventoRisco</class>
        <class>br.gov.cef.sigro.domain.siico.OperacaoBancaria</class>
        <class>br.gov.cef.sigro.domain.linhanegocio.LinhaNegocioOperacaoBancaria</class>
        <class>br.gov.cef.sigro.domain.produto.ProdutoOperacaoBancaria</class>
        <class>br.gov.cef.sigro.domain.lancamento.ModalidadeLancamentoPerda</class>
        <class>br.gov.cef.sigro.domain.perda.RegistroPerda</class>
        <class>br.gov.cef.sigro.domain.perda.Conciliacao</class>
        <class>br.gov.cef.sigro.domain.evento.RoteiroContabil</class>
        <class>br.gov.cef.sigro.domain.evento.EventoContabilProduto</class>
        <class>br.gov.cef.sigro.domain.evento.EventoExterno</class>
        <class>br.gov.cef.sigro.domain.evento.GestaoEventoContabil</class>
        <class>br.gov.cef.sigro.domain.risco.EventoRiscoEventoContabil</class>
        <class>br.gov.cef.sigro.domain.arquivo.ControleArquivoImportado</class>
        <class>br.gov.cef.sigro.domain.provisao.GrupoProvisaoEventoContabil</class>
        <class>br.gov.cef.sigro.domain.beicf.Instituicao</class>
        <class>br.gov.cef.sigro.domain.beicf.CategoriaBeicf</class>
        <class>br.gov.cef.sigro.domain.beicf.Beicf</class>
        <class>br.gov.cef.sigro.domain.beicf.RegistroBeicf</class>
        <class>br.gov.cef.sigro.domain.parametro.Parametro</class>
        <class>br.gov.cef.sigro.domain.produto.SubContaProduto</class>
        <class>br.gov.cef.sigro.domain.risco.QuestionarioRisco</class>
        <class>br.gov.cef.sigro.domain.risco.PerguntaRisco</class>
        <class>br.gov.cef.sigro.domain.risco.MapeamentoRisco</class>
        <class>br.gov.cef.sigro.domain.risco.QuestionarioPerguntaRisco</class>
        <class>br.gov.cef.sigro.domain.risco.QuestionarioCategoriaRisco</class>
        <class>br.gov.cef.sigro.domain.risco.CategoriaQuestaoRisco</class>
        <class>br.gov.cef.sigro.domain.autoavaliacao.PesquisaAutoavaliacao</class>
        <class>br.gov.cef.sigro.domain.autoavaliacao.PesquisaAutoavaliacaoUnidade</class>
        <class>br.gov.cef.sigro.domain.autoavaliacao.RespostaQuestionarioAutoavaliacao</class>
        <class>br.gov.cef.sigro.domain.autoavaliacao.DetalheRespostaQuestionario</class>
        <class>br.gov.cef.sigro.domain.risco.MapeamentoUnidadeEnvolvida</class>
        <class>br.gov.cef.sigro.domain.risco.MapeamentoRiscoSistema</class>
        <class>br.gov.cef.sigro.domain.risco.MapeamentoRiscoProduto</class>
        <class>br.gov.cef.sigro.domain.risco.RespostaAvaliacaoRisco</class>
        <class>br.gov.cef.sigro.domain.parametro.ParametroMensagemEmail</class>
        <class>br.gov.cef.sigro.domain.lancamento.SituacaoAgendamentoLancamentoContabil</class>
        <class>br.gov.cef.sigro.domain.lancamento.AgendamentoImportacaoLancamentoContabil</class>
        <class>br.gov.cef.sigro.domain.evento.ClassificacaoEventoContabilConta</class>
        <class>br.gov.cef.sigro.domain.matrizrisco.MatrizRisco</class>
        <class>br.gov.cef.sigro.domain.matrizrisco.DetalheMatrizRisco</class>
        <class>br.gov.cef.sigro.domain.matrizrisco.MatrizRiscoPesquisaAutoavaliacao</class>
        <class>br.gov.cef.sigro.domain.matrizrisco.MatrizRiscoPesquisaAutoavaliacaoPK</class>
        <class>br.gov.cef.sigro.domain.escalaimpacto.EscalaImpactoAutoAvaliacao</class>
        <class>br.gov.cef.sigro.domain.recomendacao.RecomendacaoPadrao</class>
        <class>br.gov.cef.sigro.domain.recomendacao.RecomendacaoEvento</class>
        <class>br.gov.cef.sigro.domain.autoavaliacao.NivelImpactoAutoavaliacao</class>
        <class>br.gov.cef.sigro.domain.transferencia.TransferenciaResponsabilidade</class>
        <class>br.gov.cef.sigro.domain.questionarioautoavaliacao.QuestaoAutoavaliacao</class>
        <class>br.gov.cef.sigro.domain.questionarioautoavaliacao.QuestionarioAutoavaliacao</class>
        <class>br.gov.cef.sigro.domain.questionarioautoavaliacao.QuestionarioQuestaoAutoavaliacao</class>
        <class>br.gov.cef.sigro.domain.questionarioautoavaliacao.AlternativaQuestaoAutoavaliacao</class>
        <class>br.gov.cef.sigro.domain.unidade.RepresentacaoUnidade</class>
        <class>br.gov.cef.sigro.domain.unidade.RepresentacaoUnidadePK</class>
        <class>br.gov.cef.sigro.domain.transferencia.ItemTransferenciaResponsabilidade</class>
        <class>br.gov.cef.sigro.domain.lancamento.basehistorica.LancamentoContabilCredito</class>
        <class>br.gov.cef.sigro.domain.lancamento.basehistorica.LancamentoContabilDebito</class>
        <class>br.gov.cef.sigro.domain.risco.EtapaMapeamentoRisco</class>
        <class>br.gov.cef.sigro.domain.risco.EtapaMapeamentoRiscoPK</class>
        <class>br.gov.cef.sigro.domain.questionarioautoavaliacao.ParametroQuestaoAutoavaliacao</class>
        <class>br.gov.cef.sigro.domain.risco.PesquisaAvaliacaoRisco</class>
        <class>br.gov.cef.sigro.domain.risco.PesquisaAvaliacaoRiscoUnidade</class>
        <class>br.gov.cef.sigro.domain.risco.ParametroFaixaNotaAvaliacaoRisco</class>
        <class>br.gov.cef.sigro.domain.perda.RegistroPerdaBaseHistorica</class>
        <class>br.gov.cef.sigro.domain.perda.ItemRegistroPerdaBaseHistorica</class>
        <class>br.gov.cef.sigro.domain.lancamento.AgendamentoImportacaoPerda</class>



        <!-- Entidades SIICO -->
        <class>br.gov.cef.siico.domain.entidade.EntidadeSiico</class>
        <class>br.gov.cef.siico.domain.publico.PublicoAlvo</class>
        <class>br.gov.cef.siico.domain.sistema.Sistema</class>
        <class>br.gov.cef.siico.domain.produto.FonteProduto</class>
        <class>br.gov.cef.siico.domain.produto.FonteRecurso</class>
        <class>br.gov.cef.siico.domain.publico.TipoPublico</class>
        <class>br.gov.cef.siico.domain.produto.TipoCanal</class>
        <class>br.gov.cef.siico.domain.produto.SegmentoAtendimento</class>
        <class>br.gov.cef.siico.domain.produto.AtendimentoProduto</class>
        <class>br.gov.cef.siico.domain.produto.ComercializacaoProduto</class>
        <class>br.gov.cef.siico.domain.empregado.EmpregadoCaixa</class>
        <class>br.gov.cef.siico.domain.endereco.Endereco</class>
        <class>br.gov.cef.siico.domain.empregado.Funcao</class>
        <class>br.gov.cef.siico.domain.empregado.Cargo</class>
        <class>br.gov.cef.siico.domain.endereco.Localidade</class>
        <class>br.gov.cef.siico.domain.endereco.MunicipioIbge</class>
        <class>br.gov.cef.siico.domain.endereco.MunicipioIbgePK</class>
        <class>br.gov.cef.siico.domain.endereco.Regiao</class>
        <class>br.gov.cef.siico.domain.endereco.Uf</class>
        <class>br.gov.cef.siico.domain.unidade.TipoUnidade</class>
        <class>br.gov.cef.siico.domain.unidade.Unidade</class>
        <class>br.gov.cef.siico.domain.unidade.UnidadePK</class>
        <class>br.gov.cef.siico.domain.unidade.VinculoUnidade</class>
        <class>br.gov.cef.siico.domain.unidade.VinculoUnidadePK</class>
        <class>br.gov.cef.siico.domain.unidade.LocalizacaoUnidade</class>
        <class>br.gov.cef.siico.domain.unidade.LocalizacaoUnidadePK</class>
        <class>br.gov.cef.siico.domain.produto.GestaoProduto</class>
        <class>br.gov.cef.siico.domain.produto.ProdutoSiico</class>
        <class>br.gov.cef.siico.domain.operacao.Operacao</class>
        <class>br.gov.cef.siico.domain.operacao.LinhaOperacao</class>
        <class>br.gov.cef.siico.domain.operacao.AreaAtuacao</class>
        <class>br.gov.cef.siico.domain.unidade.ResponsavelUnidadeCaixa</class>
        <class>br.gov.cef.siico.domain.unidade.ResponsavelUnidadeCaixaPK</class>
        <class>br.gov.cef.siico.domain.comunicacao.MeioComunicacao</class>
        <class>br.gov.cef.siico.domain.comunicacao.MeioComunicacaoUnidade</class>
        <class>br.gov.cef.siico.domain.comunicacao.MeioComunicacaoUnidadePK</class>


        <!-- Processamento -->
        <class>br.gov.cef.sigro.domain.processamento.Processamento</class>
        <class>br.gov.cef.sigro.domain.processamento.ExecucaoProcessamento</class>
        <class>br.gov.cef.sigro.domain.processamento.ItemProcessamento</class>


        <!-- Cenário -->
        <class>br.gov.cef.sigro.domain.cenario.Cenario</class>
        <class>br.gov.cef.sigro.domain.cenario.RegistroCenario</class>


        <!-- Plano de Ação -->
        <class>br.gov.cef.sigro.domain.matrizgut.MatrizGut</class>
        <class>br.gov.cef.sigro.domain.matrizgut.DetalheMatrizGut</class>
        <class>br.gov.cef.sigro.domain.planoacao.OrigemApontamento</class>
        <class>br.gov.cef.sigro.domain.planoacao.Acao</class>
        <class>br.gov.cef.sigro.domain.planoacao.PlanoAcaoAcaoMitigacao</class>
        <class>br.gov.cef.sigro.domain.planoacao.ParametrosPlanoAcaoAcaoMitigacao</class>
        <class>br.gov.cef.sigro.domain.planoacao.historico.HistoricoPlanoAcao</class>

        <exclude-unlisted-classes>false</exclude-unlisted-classes>

        <properties>
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.format_sql" value="true" />
            <property name="hibernate.connection.driver_class" value="org.postgresql.Driver" />
            <property name="hibernate.hbm2ddl.auto" value="validate" />
            <property name="hibernate.jdbc.batch_size" value="50" />
            <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
            <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider" />
            <property name="hibernate.default_schema" value="grosm001" />
        </properties>
    </persistence-unit>



</persistence>

【问题讨论】:

    标签: java jakarta-ee spring-data cdi


    【解决方案1】:

    不要创建生产者。在您的商务课程中,只需使用:

    @PersistenceContext(unitName = "simje")
    private EntityManager entityManager;
    

    @PersistenceContext(unitName = "sigro")
    private EntityManager entityManagerSigro;
    

    或两者兼有。

    如果您仍想对生产者使用 CDI 注入,则需要创建限定符来区分这些实体管理器。但我从来没有看到这个解决方案,因为它没有任何意义......

    @Qualifier
    

    更多信息在这里:Dependency injection

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-11
      • 1970-01-01
      • 1970-01-01
      • 2017-02-17
      • 2020-02-23
      • 1970-01-01
      • 1970-01-01
      • 2019-10-23
      相关资源
      最近更新 更多