[英]java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist
[英]java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist Spring Data source
我正在將工作中的休眠項目轉換為Spring休眠項目。在現有的項目會話中,工廠的創建是通過加載hibernate cfg文件完成的。自從我進入春季以來,我通過在Java中進行配置通過Localsessionfactory修改了會話創建,我得到了一個奇怪的異常如下
ORA-00942: table or view does not exist
但是在休眠的cfg查找中同樣可以正常工作。
我正在使用兩個事務管理器。下面是我的代碼存儲庫分類
@Repository
public class TestImpl implements
TestRepository {
@Autowired
@Qualifier("fSessionFactory")
SessionFactory sessionFactory;
@Autowired
@Qualifier("dSessionFactory")
SessionFactory sessionFactory2;
@SuppressWarnings("unchecked")
@Transactional("dTransaction")
public Recordse getOrders(String code, int id ) throws PersistenceException {
Session session = null;
try {
session =sessionFactory.getCurrentSession();
List<Order> orderList = session
.createQuery("FROM Orders WHERE CODE = :code AND NUM_CC = :id " )
.setParameter("code", code)
.setParameter("id", id)
.list();
}
catch (Exception e) {
throw new PersistenceException(e);
}
return empSickTime ;
}
@Transactional("fTransaction")
@Override
public SelectedRecords getRecords(String code, String grpId) throws PersistenceException {
Session session = null;
try {
session = sessionFactory2.getCurrentSession();
List<Records> recList = session
.createQuery("FROM Records WHERE CODE = :code AND GRP_CC = :id " )
.setParameter("code", code)
.setParameter("id", id)
.list();
}
}
catch (HibernateException e) {
throw new PersistenceException(e);
}
return qualifiedFleet;
}
}
PersistencConfig1
@Configuration
@EnableTransactionManagement
@PropertySource({ "classpath:persistence.properties" })
@ComponentScan({ "com.test.test2.*" })
public class PersistenceConfiguration1 {
@Autowired
private Environment env;
@Bean(name=" ")
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(testDataSource());
sessionFactory.setPackagesToScan(new String[] {
" com.test.test2"});
sessionFactory.setHibernateProperties(hibernateProperties1());
return sessionFactory;
}
@Bean
public DataSource testDataSource() {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName(env.getProperty("jdbc.driverClassName"));
dataSource.setUrl(env.getProperty("jdbc.url"));
dataSource.setUsername(env.getProperty("jdbc.user"));
dataSource.setPassword(env.getProperty("jdbc.pass"));
return dataSource;
}
@Bean(name="dTransaction")
@Autowired
public HibernateTransactionManager transactionManager(
SessionFactory sessionFactory) {
HibernateTransactionManager txManager = new HibernateTransactionManager();
txManager.setSessionFactory(sessionFactory);
return txManager;
}
@Bean
public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
return new PersistenceExceptionTranslationPostProcessor();
}
Properties hibernateProperties1() {
return new Properties() {
{
setProperty("hibernate.hbm2ddl.auto",
env.getProperty("hibernate.hbm2ddl.auto"));
setProperty("hibernate.dialect",
env.getProperty("hibernate.dialect"));
setProperty("hibernate.globally_quoted_identifiers", "true");
}
};
}
}
PersistenceConfig2
@Configuration
@EnableTransactionManagement
@PropertySource({ "classpath:persistence.properties" })
@ComponentScan({ "com.test.test3.*" })
public class PersistenceConfigurationDOTC {
@Autowired
private Environment env;
@Bean(name="dSessionFactory")
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(test1DataSource());
sessionFactory.setPackagesToScan(new String[] {
"com.test.test3.entity"});
sessionFactory.setHibernateProperties(hibernateProperties());
return sessionFactory;
}
@Bean
public DataSource test1DataSource() {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName(env.getProperty("jdbc1.driverClassName"));
dataSource.setUrl(env.getProperty("jdbc1.url"));
dataSource.setUsername(env.getProperty("jdbc1.user"));
dataSource.setPassword(env.getProperty("jdbc1.pass"));
return dataSource;
}
@Bean(name = "fTransaction")
@Autowired
public HibernateTransactionManager transactionManager() {
HibernateTransactionManager txManager = new HibernateTransactionManager();
txManager.setSessionFactory(sessionFactoryFCDS().getObject());
return txManager;
}
Properties hibernateProperties() {
return new Properties() {
{
setProperty("hibernate.hbm2ddl.auto",
env.getProperty("hibernate.hbm2ddl.auto"));
setProperty("hibernate.dialect",
env.getProperty("hibernate.dialect"));
setProperty("hibernate.globally_quoted_identifiers", "true");
}
};
}
}
我有想念嗎?
@Bean(name=" ")
public LocalSessionFactoryBean sessionFactory() {
您的bean名稱似乎不正確?
另一件事是在dSessionFactory
,您在聲明sessionFactory2
正在使用fTransaction
中的會話工廠
@Autowired
@Qualifier("dSessionFactory")
SessionFactory sessionFactory2;
然后在fTransaction
使用
@Transactional("fTransaction")
@Override
public SelectedRecords getRecords(String code, String grpId) throws PersistenceException {
Session session = null;
try {
session = sessionFactory2.getCurrentSession();
我猜您指的是錯誤的數據庫連接。
下一次,我會建議給你的屬性更有意義的名稱,如paymentSessionFactory
, geoSessionFactory
&等等,這樣你就不會混合var1
VS session2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.