小编tew*_*ewe的帖子

如何配置Spring以使JPA(Hibernate)和JDBC(JdbcTemplate或MyBatis)共享相同的事务

我有一个dataSource,我使用Spring 3.0.3,Hibernate 3.5.1作为JPA提供程序,我使用MyBatis 3.0.2进行一些查询,我的应用程序在Tomcat 6上运行.我有一个HibernateDAO和一个MyBatisDAO,当我同时调用它们时从使用@Transactional注释的相同方法看起来它们不共享相同的事务,它们获得不同的连接.
我怎么能让他们这样做?

我已经尝试从DataSourceUtils.getConnection(dataSource)获取连接,我得到了MyBatis使用的连接,这很奇怪我认为问题出在MyBatis配置中,它不能使用JpaTransactionManager.甚至多次调用DataSoruceUtils.getConnection总是给出相同的连接,这没关系.

经过一些谷歌搜索后我尝试了spring-instrument-tomcat的类加载器(虽然我不知道tomcat是否真的使用它:))

部分applicationContext

<bean class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" id="dataSource">
    <property name="driverClassName" value="${database.driverClassName}"/>
    <property name="url" value="${database.url}"/>
    <property name="username" value="${database.username}"/>
    <property name="password" value="${database.password}"/>
</bean>

<bean class="org.springframework.orm.jpa.JpaTransactionManager" id="transactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>

<tx:annotation-driven mode="aspectj" transaction-manager="transactionManager"/>

<bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" id="entityManagerFactory">
    <property name="dataSource" ref="dataSource"/>
</bean>

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="configLocation" value="classpath:META-INF/mybatis/mybatis-config.xml" />
</bean>
Run Code Online (Sandbox Code Playgroud)

部分mybatis配置

<settings>
    <setting name="cacheEnabled" value="false" />
    <setting name="useGeneratedKeys" value="false" />
    <setting name="defaultExecutorType" value="REUSE" />
    <setting name="lazyLoadingEnabled" value="false"/>
</settings>
Run Code Online (Sandbox Code Playgroud)

部分persistence.xml

<persistence-unit name="persistenceUnit" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
Run Code Online (Sandbox Code Playgroud)

spring hibernate jpa transactions mybatis

24
推荐指数
1
解决办法
3万
查看次数

发布新实体时如何在 Spring Data REST 中引用具有继承的实体?

我有加入继承的实体:

支持者

@Entity
@Inheritance(strategy=InheritanceType.JOINED)
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "supporterType")
@JsonSubTypes({
    @JsonSubTypes.Type(value = PersonSupporterEntity.class, name = "PERSON"),
    @JsonSubTypes.Type(value = CompanySupporterEntity.class, name = "COMPANY")
})
@DiscriminatorColumn(name="supporter_type")
@Table(name = "supporter")
public class SupporterEntity extends UpdatableEntity {
    private long id;
    private SupporterType supporterType;
    private PartnerEntity partner;
...
}
Run Code Online (Sandbox Code Playgroud)

个人支持者

@Entity
@DiscriminatorValue("PERSON")
@Table(name = "person_supporter")
public class PersonSupporterEntity extends SupporterEntity {
...
}
Run Code Online (Sandbox Code Playgroud)

公司支持者

@Entity
@DiscriminatorValue("COMPANY")
@Table(name = "company_supporter")
public class CompanySupporterEntity extends SupporterEntity {
...
}
Run Code Online (Sandbox Code Playgroud)

我有另一个引用 SupporterEntity 的实体

@Entity …
Run Code Online (Sandbox Code Playgroud)

rest jackson spring-data-rest

5
推荐指数
1
解决办法
3539
查看次数

Maven错误:无法将资源/服务器重定向太多次

我们的代理程序崩溃了,我试图在Maven关闭时更新依赖关系.从那时起,我无法使用Maven下载任何内容.我得到这个错误的一切.我尝试了-U选项,删除我的本地存储库并尝试了不同的Maven版本(2.0.9,2.2.1),但它不起作用.不知道怎么解决这个问题?

此前它还说'存储库将被列入黑名单'给所有人.

Downloading: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-compiler-plugin/2.1/maven-compiler-plugin-2.1.pom
[WARNING] Unable to get resource 'org.apache.maven.plugins:maven-compiler-plugin:pom:2.1'
from repository central (http://repo1.maven.org/maven2):
Error transferring file: Server redirected too many times (20) org.apache.maven.plugins:maven-compiler-plugin:pom:2.1 from the specified remote repositories: jboss-snapshot (http://snapshots.jboss.org/maven2), central (http://repo1.maven.org/maven2), JBoss Repo (http://repository.jboss.com/maven2), spring-maven-snapshot (http://maven.springframework.org/snapshot), com.springsource.repository.bundles.external (http://repository.springsource.com/maven/bundles/external), com.springsource.repository.bundles.snapshot (http://repository.springsource.com/maven/bundles/snapshot), jboss (http://repository.jboss.com/maven2), com.springsource.repository.bundles.release (http://repository.springsource.com/maven/bundles/release), jboss-snapshot-plugins (http://snapshots.jboss.org/maven2), com.springsource.repository.bundles.milestone (http://repository.springsource.com/maven/bundles/milestone), jboss-plugins (http://repository.jboss.com/maven2) at org.apache.maven.artifact.resolver.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:228) at org.apache.maven.artifact.resolver.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:90) at org.apache.maven.project.DefaultMavenProjectBuilder.findModelFromRepository(DefaultMavenProjectBuilder.java:558) ... 25 more Caused by: org.apache.maven.wagon.ResourceDoesNotExistException: Unable to download the artifact from any repository at org.apache.maven.artifact.manager.DefaultWagonManager.getArtifact(DefaultWagonManager.java:404) at org.apache.maven.artifact.resolver.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:216) ... 27 more

blacklist maven

4
推荐指数
2
解决办法
1万
查看次数