我对 Spring Data 有一个奇怪的问题。
我有 2 个不同的项目,其中一个在 postgres 上有您的架构。
在第一个项目中,我可以在任何实体中执行 CRUD,并且一切正常。
在第二个项目中,我依赖于第一个项目,我可以在第二个项目的任何内容中执行 CRUD 并列出第一个项目的任何内容。但我不能坚持第一个项目的任何东西
我意识到如果我抛出这条线
<import resource="classpath*:applicationContext.xml" />
在第二个应用程序的应用程序上下文结束时,我可以在第二个项目上保留第一个项目的任何内容,但我不能再保留第二个项目的内容。
如果我在第二个应用程序的 application-context.xml 的开头让这条线出现,它将保持第二个项目的模型正常。
这是第二个项目的完整 XML 应用程序上下文:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Carregar os dados applicationOrcamento.properties na memória -->
<!-- <context:property-placeholder location="classpath*:applicationOrcamento.properties"
ignore-unresolvable="true"/> -->
<import resource="classpath*:applicationContext.xml" /> <!-- this line that i'm having problem Application Context of the first project if this line is here, i can persist anything of the second project, if i put on the end will persist any thing of the first project, but nothing of the second project... -->
<!-- Activates scanning of @Autowired -->
<context:annotation-config />
<context:component-scan
base-package="br.com.secondProject.package.repository" />
<context:component-scan base-package="br.com.secondProject.package.services" />
<!-- <context:component-scan base-package="br.com.firstProject.package.repository"
/> -->
<!-- <context:component-scan base-package="br.com.firstProject.package.services"
/> -->
<jpa:repositories base-package="br.com.secondProject.package.repository"
entity-manager-factory-ref="entityManagerFactoryOrcamento" />
<bean class="org.springframework.orm.hibernate4.HibernateExceptionTranslator" />
<!-- Database -->
<bean id="datasourceOrcamento"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.postgresql.Driver" />
<property name="url"
value="jdbc:postgresql://localhost:5432/DB?searchpath=second_project" />
<property name="username" value="postgres" />
<property name="password" value="123456" />
</bean>
<!-- Entity Manager -->
<bean id="entityManagerFactoryOrcamento"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="datasourceOrcamento" />
<property name="persistenceUnitName" value="second-project-pu" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="true" />
<!-- <property name="generateDdl" value="true" /> -->
</bean>
</property>
<property name="packagesToScan" value="br.com.secondProject.package.model" />
<property name="jpaDialect">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
</property>
</bean>
<!-- Alterar para JTA quando for para produção! -->
<!-- <jee:jndi-lookup jndi-name="java:/prject-ds" id="datasource" resource-ref="true"/> -->
<!-- Transaction Manager -->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactoryOrcamento" />
</bean>
<tx:annotation-driven />
`
第二个应用程序的 Persistence.xml 也在导入第一个项目的类,真正的问题是在第二个项目上持久化第一个项目的实体
我已经尝试将我的控制器放在
@ContextHierarchy({
@ContextConfiguration(locations = { "/applicationContextOrcamento.xml"}), //second Project xml
@ContextConfiguration(locations = { "classpath*:applicationContext.xml" })// first project xml
})
但不起作用...
我只需要在第二个项目中保留第一个项目的实体