Spring JPA、Hibernate、MySQL に問題があります。エンティティ (Nom.java) とリポジトリ (パブリック インターフェイス NomRepository は JpaRepository を拡張します) を持っています。それらは問題なく作成され、注入されます。
問題は、リポジトリの保存メソッドを使用してレコードを保存しようとすると、Spring が「テーブル '' が存在しません」と不平を言うことです。実際、MySQL にはこのテーブルがありません。hibernate.hbm2ddl.auto のさまざまな値を試してみましたが、役に立ちませんでした。
ところで、XML を使用しない構成を使用します。
設定ファイルは次のとおりです。
package ru.interosite.awp.config;
import java.util.Properties;
import javax.sql.DataSource;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.jpa.JpaVendorAdapter;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.Database;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
@Configuration
@ComponentScan("ru.interosite.awp")
@EnableAutoConfiguration
public class AppConfiguration {
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/awp");
dataSource.setUsername("root");
dataSource.setPassword("password");
return dataSource;
}
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource dataSource, JpaVendorAdapter jpaVendorAdapter) {
LocalContainerEntityManagerFactoryBean lef = new LocalContainerEntityManagerFactoryBean();
lef.setPersistenceUnitName("my_pu");
lef.setPackagesToScan("ru.interosite.awp.data");
lef.setDataSource(dataSource);
lef.setJpaVendorAdapter(jpaVendorAdapter);
lef.setJpaProperties(getJpaProperties());
return lef;
}
@Bean
public JpaVendorAdapter jpaVendorAdapter() {
HibernateJpaVendorAdapter jpaVendorAdapter = new HibernateJpaVendorAdapter();
jpaVendorAdapter.setDatabase(Database.MYSQL);
jpaVendorAdapter.setGenerateDdl(true);
jpaVendorAdapter.setShowSql(true);
jpaVendorAdapter.setDatabasePlatform("org.hibernate.dialect.MySQL5Dialect");
return jpaVendorAdapter;
}
private Properties getJpaProperties() {
return new Properties() {
{
setProperty("hibernate.hbm2ddl.auto", "update");
setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect");
setProperty("hibernate.show_sql", "true");
setProperty("hibernate.format_sql", "true");
}
};
}
}
アプリを起動する方法は次のとおりです。
package ru.interosite.awp;
import java.awt.Font;
import javax.swing.UIManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.context.ApplicationContext;
import ru.interosite.awp.config.AppConfiguration;
import ru.interosite.awp.gui.UIUtils;
public class Boot {
private static final Logger LOGGER = LoggerFactory.getLogger(Boot.class);
public static void main( String[] args )
{
UIUtils.setUIFont(new javax.swing.plaf.FontUIResource(Font.SANS_SERIF, Font.PLAIN, 16));
try {
String lafClassName = UIManager.getSystemLookAndFeelClassName();
UIManager.setLookAndFeel(lafClassName);
} catch (Exception e) {
LOGGER.debug(e.getMessage());
}
ApplicationContext ctx = SpringApplication.run(AppConfiguration.class, args);
((Runner)ctx.getBean("runner")).start();
}
}
これは私の pom.xml です:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <groupId>ru.interosite</groupId> <artifactId>AWP</artifactId> <version>1.0-SNAPSHOT</version> <packaging>ジャー</packaging> <name>AWP</name> <url>http://maven.apache.org</url> <プロパティ> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <start-class>ru.interosite.awp.Runner</start-class> </プロパティ> <親> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <バージョン>0.5.0.M4</バージョン> </親> <依存関係> <依存関係> <groupId>org.springframework</groupId> <artifactId>スプリングオーム</artifactId> </依存> <依存関係> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jpa</artifactId> </依存> <依存関係> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> </依存> <依存関係> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </依存> <依存関係> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> </依存> <依存関係> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <バージョン>5.1.26</バージョン> </依存> <依存関係> <groupId>org.mockito</groupId> <artifactId>mockito-all</artifactId> <バージョン>1.9.5</バージョン> </依存> </依存関係> <ビルド> <プラグイン> <プラグイン> <artifactId>maven-compiler-plugin</artifactId> <バージョン>2.3.2</バージョン> </プラグイン> <プラグイン> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </プラグイン> </プラグイン> </ビルド> <リポジトリ> <リポジトリ> <id>春のスナップショット</id> <name>春のスナップショット</name> <url>http://repo.spring.io/libs-snapshot</url> <スナップショット> <有効>真</有効> </スナップショット> </リポジトリ> <リポジトリ> <id>春のマイルストーン</id> <name>春のマイルストーン</name> <url>http://repo.spring.io/libs-milestone</url> <スナップショット> <有効>false</有効> </スナップショット> </リポジトリ> <リポジトリ> <id>org.jboss.repository.releases</id> <name>JBoss Maven リリース リポジトリ</name> <url>https://repository.jboss.org/nexus/content/repositories/releases</url> <スナップショット> <有効>false</有効> </スナップショット> </リポジトリ> </リポジトリ> <プラグインリポジトリ> <プラグインリポジトリ> <id>春のスナップショット</id> <name>春のスナップショット</name> <url>http://repo.spring.io/libs-snapshot</url> <スナップショット> <有効>真</有効> </スナップショット> </プラグインリポジトリ> <プラグインリポジトリ> <id>春のマイルストーン</id> <name>春のマイルストーン</name> <url>http://repo.spring.io/libs-milestone</url> <スナップショット> <有効>false</有効> </スナップショット> </プラグインリポジトリ> </pluginRepositories> </プロジェクト>