質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

受付中

jpa:transactionManagerRefの設定は認識されいないようです。

meng
meng

総合スコア0

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0回答

0評価

0クリップ

1671閲覧

投稿2017/07/14 01:09

###前提・実現したいこと
開発環境Intellij idea,利用言語及びframework: java8,gradle,jpa
jpaを利用して、oracle,mySqlの二つのDBをアクセスしたいです。

###発生している問題・エラーメッセージ
buildが成功しましたが、実行すると、下記のエラーが表示されます:

Field ticketCustomerRepository in itrade.replacement.controller.TicketController required a bean named 'entityManagerFactory' that could not be found.

ちなみに、oracleのみか、mysqlのみの場合だと、アクセスができます。
###該当のソースコード

======================================== =====DataSourceConfig.javaファイル======= ======================================== @Configuration public class DataSourceConfig { @Bean(name = "primaryDataSource") @Qualifier("primaryDataSource") @ConfigurationProperties(prefix="spring.datasource.primary") public DataSource primaryDataSource() { return DataSourceBuilder.create().build(); } @Bean(name = "secondaryDataSource") @Qualifier("secondaryDataSource") @Primary @ConfigurationProperties(prefix="spring.datasource.secondary") public DataSource secondaryDataSource() { return DataSourceBuilder.create().build(); } } ======================================== =====DataSourceConfig.javaファイル======= ======================================== @Configuration @EnableTransactionManagement @EnableJpaRepositories( entityManagerFactoryRef="entityManagerFactoryPrimary", transactionManagerRef="transactionManagerPrimary", basePackages= { "i.replacement.repository.primary" }) //Repository場所 public class PrimaryConfig { @Autowired @Qualifier("primaryDataSource") private DataSource primaryDataSource; @Primary @Bean(name = "entityManagerPrimary") public EntityManager entityManager(EntityManagerFactoryBuilder builder) { return entityManagerFactoryPrimary(builder).getObject().createEntityManager(); } @Primary @Bean(name = "entityManagerFactoryPrimary") public LocalContainerEntityManagerFactoryBean entityManagerFactoryPrimary (EntityManagerFactoryBuilder builder) { return builder .dataSource(primaryDataSource) .properties(getVendorProperties(primaryDataSource)) .packages("i.replacement.entity.primary") //entity場所 .persistenceUnit("primaryPersistenceUnit") .build(); } @Autowired private JpaProperties jpaProperties; private Map<String, String> getVendorProperties(DataSource dataSource) { return jpaProperties.getHibernateProperties(dataSource); } @Primary @Bean(name = "transactionManagerPrimary") public PlatformTransactionManager transactionManagerPrimary(EntityManagerFactoryBuilder builder) { return new JpaTransactionManager(entityManagerFactoryPrimary(builder).getObject()); } } ======================================== =====SecondaryConfig.javaファイル======= ======================================== @Configuration @EnableTransactionManagement @EnableJpaRepositories( entityManagerFactoryRef="entityManagerFactorySecondary", transactionManagerRef="transactionManagerSecondary", basePackages= { "itrade.replacement.repository.secondary" }) //Repository場所 public class SecondaryConfig { @Autowired @Qualifier("secondaryDataSource") private DataSource secondaryDataSource; @Bean(name = "entityManagerSecondary") public EntityManager entityManager(EntityManagerFactoryBuilder builder) { return entityManagerFactorySecondary(builder).getObject().createEntityManager(); } @Bean(name = "entityManagerFactorySecondary") public LocalContainerEntityManagerFactoryBean entityManagerFactorySecondary (EntityManagerFactoryBuilder builder) { return builder .dataSource(secondaryDataSource) .properties(getVendorProperties(secondaryDataSource)) .packages("itrade.replacement.entity.secondary") //entity場所 .persistenceUnit("secondaryPersistenceUnit") .build(); } @Autowired private JpaProperties jpaProperties; private Map<String, String> getVendorProperties(DataSource dataSource) { return jpaProperties.getHibernateProperties(dataSource); } @Bean(name = "transactionManagerSecondary") PlatformTransactionManager transactionManagerSecondary(EntityManagerFactoryBuilder builder) { return new JpaTransactionManager(entityManagerFactorySecondary(builder).getObject()); } } ======================================== =====application.ymlファイル======= ======================================== spring: datasource: primary: url: jdbc:oracle:thin:@xxx.xxx.xxx.xxx:1521:sasa username: user1 password: pass1 driver-class-name: oracle.jdbc.driver.OracleDriver secondary: url: jdbc:mysql://yyy.yyy.yyy.yyy:3306/sada username: user2 password: pass2 driver-class-name: com.mysql.jdbc.Driver jpa: hibernate: ddl-auto: none ejb.naming_strategy: org.springframework.boot.orm.jpa.hibernate.SpringNamingStrategy ======================================== =====build.gradleファイル======= ======================================== dependencies { compile('org.springframework.boot:spring-boot-starter-data-jpa') compile('javax.inject:javax.inject:1') // compile("org.jetbrains.kotlin:kotlin-stdlib-jre8:${kotlin_version}") // compile('org.springframework.boot:spring-boot-starter-security') compile('org.springframework.boot:spring-boot-starter-web') compile("com.fasterxml.jackson.datatype:jackson-datatype-jdk8", "com.fasterxml.jackson.datatype:jackson-datatype-jsr310") compile("org.json:json") runtime('org.springframework.boot:spring-boot-devtools') runtime('com.h2database:h2') runtime('mysql:mysql-connector-java') runtime(':ojdbc7@jar') compileOnly('org.projectlombok:lombok') testCompile('org.springframework.boot:spring-boot-starter-test') // compile('org.springframework.orm:${org.springframework.version}') compile("org.webjars:bootstrap:3.3.7") compile("org.webjars:jquery:3.1.0") compile("org.hibernate:hibernate-entitymanager"); compile("org.hibernate:hibernate-core"); compile("org.json:json") } ======================================== =====TigerCustomerRepository.javaファイル======= ======================================== package i.replacement.repository.primary; import i.replacement.entity.primary.TigerCustomer; import i.replacement.entity.primary.TigerCustomerPK; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import java.util.List; public interface TigerCustomerRepository extends JpaRepository<TigerCustomer, TigerCustomerPK> { @Query(value = "select a.customer from TigerCustomer a where a.packageName = :packageName") public List<String> findByPackageName(@Param("packageName") String packageName); } ======================================== =====TigerCustomer.javaファイル======= ======================================== package i.replacement.entity.primary; import lombok.Getter; import lombok.Setter; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.IdClass; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.validation.constraints.NotNull; import java.io.Serializable; import java.util.Date; @Entity @Table(name="TIGER_CUSTOMER") @IdClass(TigerCustomerPK.class) public class TigerCustomer implements Serializable { @Id @Column(name="PACKAGE_NAME") @Getter @Setter private String packageName; @Id @Column(name="CUSTOMER") @Getter @Setter private String customer; @Column(name="USE_FLAG") @Getter @Setter @NotNull private String useFlag; @Temporal(TemporalType.TIMESTAMP) @Column(name="CREATE_TIMESTAMP") @Getter @Setter @NotNull private Date createTimestamp; @Temporal(TemporalType.TIMESTAMP) @Column(name="UPDATE_TIMESTAMP") @Getter @Setter @NotNull private Date updateTimestamp; } logging.level.org.hibernate: INFO ここにご自身が実行したソースコードを書いてください

###試したこと
Properties properties = new Properties();
properties.setProperty("hibernate.dialect", org.hibernate.dialect.Oracle10gDialect.class.getName());
properties.setProperty("hibernate.hbm2ddl.auto", "none");
properties.setProperty("hibernate.ejb.naming_strategy", "org.springframework.boot.orm.jpa.hibernate.SpringNamingStrategy");
setJpaPropertiesなどを試しましたが、全部だめ。
transactionManagerRefで設定した値が認識されていないようです。
詰まっています。。。

###補足情報(言語/FW/ツール等のバージョンなど)
java8/Spring boot/gradle/jpa

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。