下面列出了怎么用org.hibernate.dialect.PostgreSQL9Dialect的API类实例代码及写法,或者点击链接到github查看源代码。
@Test
public void shouldGenerateSchemaFromDatabaseWithUpdateWithPostgresDialect() throws Exception {
// given
File outputPath = tempFolder.newFolder();
Properties jpaProperties = new Properties();
jpaProperties.setProperty("hibernate.dialect", PostgreSQL9Dialect.class.getCanonicalName());
SchemaGenerator schemaGenerator = new SchemaGenerator();
// when
schemaGenerator.generate(new GeneratorSettings(GenerationMode.DATABASE, outputPath,
Arrays.asList("com.devskiller.jpa2ddl.sample"), Action.UPDATE, jpaProperties, true, ";", false));
// then
String sql = new String(Files.readAllBytes(outputPath.toPath().resolve("v1__jpa2ddl.sql")));
assertThat(sql).contains("create table User");
assertThat(sql).doesNotContain("drop table User");
}
@Override
public void configure(Map configurationValues) {
//TODO: actually extract the configuration values we need rather than keeping a reference to the whole map.
this.configurationValues = configurationValues;
showSQL = ConfigurationHelper.getBoolean( Settings.SHOW_SQL, configurationValues, false );
formatSQL = ConfigurationHelper.getBoolean( Settings.FORMAT_SQL, configurationValues, false );
usePostgresStyleParameters =
serviceRegistry.getService(JdbcEnvironment.class).getDialect() instanceof PostgreSQL9Dialect;
}
@Test
public void createReactiveSessionFactory() {
StandardServiceRegistry registry = new ReactiveServiceRegistryBuilder()
.applySetting( Settings.TRANSACTION_COORDINATOR_STRATEGY, "jta" )
.applySetting( Settings.DIALECT, PostgreSQL9Dialect.class.getName() )
.build();
Stage.SessionFactory factory = new MetadataSources( registry )
.buildMetadata()
.getSessionFactoryBuilder()
.build()
.unwrap( Stage.SessionFactory.class );
assertThat( factory ).isNotNull();
}
public static void checkEntityManagerFactoryConfiguration(EntityManagerFactory entityManagerFactory) {
try {
SessionFactoryImpl sessionFactoryImpl = entityManagerFactory.unwrap(SessionFactoryImpl.class);
if (PostgreSQL9Dialect.class
.isInstance(sessionFactoryImpl.getServiceRegistry().getService(JdbcServices.class).getDialect())) {
//fix ClassLeftUnique and ClassRightUnique, as PostgreSQL cannot evaluate them on statement level
modifyConstraints(sessionFactoryImpl);
}
} catch (PersistenceException e) {
LogManager.getLogger()
.warn("Unsupported EntityManagerFactory found: {}", entityManagerFactory.getClass().getName());
}
}
public
@Bean
EntityManagerFactory customEntityManagerFactory(DataSource dataSource) {
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
vendorAdapter.setGenerateDdl(false); // turn off with Discriminator strategy so far!
LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
factory.setJpaVendorAdapter(vendorAdapter);
factory.setPackagesToScan(TenancySampleApplication.class.getPackage().getName());
factory.setDataSource(dataSource);
factory.getJpaPropertyMap().put(Environment.DIALECT, PostgreSQL9Dialect.class.getName());
factory.getJpaPropertyMap().put(Environment.MULTI_TENANT, MultiTenancyStrategy.DISCRIMINATOR);
factory.getJpaPropertyMap().put(Environment.MULTI_TENANT_IDENTIFIER_RESOLVER, new TenantHolder());
factory.afterPropertiesSet();
return factory.getObject();
}
private void addDialects(StrategySelectorImpl strategySelector) {
addDialect( strategySelector, Cache71Dialect.class );
addDialect( strategySelector, CUBRIDDialect.class );
addDialect( strategySelector, DB2Dialect.class );
addDialect( strategySelector, DB2390Dialect.class );
addDialect( strategySelector, DB2390V8Dialect.class );
addDialect( strategySelector, DB2400Dialect.class );
addDialect( strategySelector, DerbyTenFiveDialect.class );
addDialect( strategySelector, DerbyTenSixDialect.class );
addDialect( strategySelector, DerbyTenSevenDialect.class );
addDialect( strategySelector, FirebirdDialect.class );
addDialect( strategySelector, FrontBaseDialect.class );
addDialect( strategySelector, H2Dialect.class );
addDialect( strategySelector, HANAColumnStoreDialect.class );
addDialect( strategySelector, HANARowStoreDialect.class );
addDialect( strategySelector, HSQLDialect.class );
addDialect( strategySelector, InformixDialect.class );
addDialect( strategySelector, IngresDialect.class );
addDialect( strategySelector, Ingres9Dialect.class );
addDialect( strategySelector, Ingres10Dialect.class );
addDialect( strategySelector, InterbaseDialect.class );
addDialect( strategySelector, JDataStoreDialect.class );
addDialect( strategySelector, MckoiDialect.class );
addDialect( strategySelector, MimerSQLDialect.class );
addDialect( strategySelector, MySQL5Dialect.class );
addDialect( strategySelector, MySQL5InnoDBDialect.class );
addDialect( strategySelector, MySQL57InnoDBDialect.class );
addDialect( strategySelector, MySQL57Dialect.class );
addDialect( strategySelector, Oracle8iDialect.class );
addDialect( strategySelector, Oracle9iDialect.class );
addDialect( strategySelector, Oracle10gDialect.class );
addDialect( strategySelector, PointbaseDialect.class );
addDialect( strategySelector, PostgresPlusDialect.class );
addDialect( strategySelector, PostgreSQL81Dialect.class );
addDialect( strategySelector, PostgreSQL82Dialect.class );
addDialect( strategySelector, PostgreSQL9Dialect.class );
addDialect( strategySelector, ProgressDialect.class );
addDialect( strategySelector, SAPDBDialect.class );
addDialect( strategySelector, SQLServerDialect.class );
addDialect( strategySelector, SQLServer2005Dialect.class );
addDialect( strategySelector, SQLServer2008Dialect.class );
addDialect( strategySelector, Sybase11Dialect.class );
addDialect( strategySelector, SybaseAnywhereDialect.class );
addDialect( strategySelector, SybaseASE15Dialect.class );
addDialect( strategySelector, SybaseASE157Dialect.class );
addDialect( strategySelector, TeradataDialect.class );
addDialect( strategySelector, TimesTenDialect.class );
}
@Override
public String hibernateDialect() {
return PostgreSQL9Dialect.class.getName();
}
public static boolean isPostgress() {
return PostgreSQL9Dialect.class.isAssignableFrom(getDialect());
}
public static boolean isPostgress(Class dialect) {
return PostgreSQL9Dialect.class.isAssignableFrom(dialect);
}