I am new on Hibernate and ms sql server.
I have error like this:
Log: DEBUG SQL:109 - select opmtnasaba0_.id_opmt_nasabah as id_opmt_1_48_0_, opmtnasaba0_.alamat as alamat2_48_0_, opmtnasaba0_.flag_transfer as flag_tra3_48_0_, opmtnasaba0_.id_opdd_kategori_nasabah as id_opdd_4_48_0_, opmtnasaba0_.jabatan as jabatan5_48_0_, opmtnasaba0_.keterangan as keterang6_48_0_, opmtnasaba0_.ktp_npwp as ktp_npwp7_48_0_, opmtnasaba0_.nama as nama8_48_0_, opmtnasaba0_.id_opmt_instansi as id_opmt13_48_0_, opmtnasaba0_.penanggung_jawab as penanggu9_48_0_, opmtnasaba0_.tgl_lahir as tgl_lah10_48_0_, opmtnasaba0_.tgl_status as tgl_sta11_48_0_, opmtnasaba0_.usia as usia12_48_0_ from public.opmt_nasabah opmtnasaba0_ where opmtnasaba0_.id_opmt_nasabah=?
Error: com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near the keyword 'public'
.
My jdbc.properties
jdbc.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc.dialect=org.hibernate.dialect.SQLServer2008Dialect
jdbc.databaseurl=jdbc:sqlserver://localhost\\mssql;databaseName=databaseName
jdbc.username=username
jdbc.password=password
My Configuration
@Configuration
@ComponentScan("com.blah")
@EnableTransactionManagement
@PropertySource({"classpath:/jdbc.properties"})
public class ApplicationContextConfig implements TransactionManagementConfigurer {
@Autowired
Environment env;
@Override
@Bean
public PlatformTransactionManager annotationDrivenTransactionManager() {
// TODO Auto-generated method stub
return txManager();
}
@Bean(name = "dataSource")
public DataSource getDataSource() {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName(env.getProperty("jdbc.driverClassName"));
dataSource.setUrl(env.getProperty("jdbc.databaseurl"));
dataSource.setUsername(env.getProperty("jdbc.username"));
dataSource.setPassword(env.getProperty("jdbc.password"));
return dataSource;
}
private Properties getHibernateProperties() {
Properties properties = new Properties();
properties.put("hibernate.show_sql", "true");
properties.put("hibernate.dialect", env.getProperty("jdbc.dialect"));
properties.put("hibernate.current_session_context_class",
"com.jamkrindo.SyncSuretyBondCabang.config.TransactionAwareSessionContext");
// properties.put("hibernate.hbm2ddl.auto", "create-drop");
return properties;
}
@Autowired
@Bean(name = "sessionFactory")
public SessionFactory getSessionFactory(DataSource dataSource) {
LocalSessionFactoryBuilder sessionBuilder = new LocalSessionFactoryBuilder(dataSource);
sessionBuilder.addProperties(getHibernateProperties());
sessionBuilder.scanPackages("com.jamkrindo");
return sessionBuilder.buildSessionFactory();
}
@Autowired
@Bean(name = "transactionManager")
public HibernateTransactionManager getTransactionManager(
SessionFactory sessionFactory) {
HibernateTransactionManager transactionManager = new HibernateTransactionManager(
sessionFactory);
//transactionManager.setRollbackOnCommitFailure(true);
return transactionManager;
}
@Bean
public PlatformTransactionManager txManager() {
return new DataSourceTransactionManager(getDataSource());
}
}
My Service
OpmtNasabah dmn = (OpmtNasabah) dao.get(OpmtNasabah.class, json.getIdOpmtNasabah());
My Dao
public Object get(Class clazz, Number id) {
// TODO Auto-generated method stub
return sessionFactory.getCurrentSession().get(clazz, id);
}
My assumption is because hibernate use keyword public before table_name.
How to resolve this?
Thanks.