Я использую Springboot, получаю исключение при сохранении записи даже с разрешением WRITE.Исключение:
"Отказано в разрешении INSERT для объекта 'имя_таблицы', база данных 'db_name', схема 'dbo'"
HHH000010: при выпуске пакета оно все еще содержалоОператоры JDBC.
Это хорошо работало с JdbcTemplate, когда я заменил это на репозиторий JPA, получив эту ошибку.
Вот как выглядит мой фрагмент кода:
@SpringBootApplication
@ComponentScan(basePackages = {"com.person.model"})
@EnableJpaRepositories(basePackages={"com.person.repository"})
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
Я получил несколько подключений к базе данных в этом приложении, эта база данных устанавливается как вторичное соединение. Ниже показано, как выглядит класс конфигурации
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
entityManagerFactoryRef = "entityManagerFactory",
basePackages = {"com.person.repository"})
public class PrelandDBConfig {
@Bean(name = "secDataSource")
@ConfigurationProperties(prefix = "preland.datasource")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
@PersistenceContext(unitName = "prelanding")
@Bean(name = "entityManagerFactory")
public LocalContainerEntityManagerFactoryBean entityManagerFactory(
EntityManagerFactoryBuilder builder,
@Qualifier("secDataSource") DataSource dataSource) {
return builder
.dataSource(dataSource)
.packages("com.person.model")
.persistenceUnit("prelanding")
.build();
}
@Bean(name = "transactionManager")
public PlatformTransactionManager transactionManager(
@Qualifier("entityManagerFactory") EntityManagerFactory entityManagerFactory) {
return new JpaTransactionManager(entityManagerFactory);
}
}
Ниже приведены модель и классы обслуживания:
@Entity
@Table(name = "java_app_log", catalog = "personDb", schema = "dbo")
public class AppLog {
@Id
@Column(name = "CORR_ID")
private String corrId;
@Column(name = "LOG_MSG")
private String logMsg;
@Column(name = "CREATE_DATE")
private Date createDate;
}
@Service
public class DBService {
@Autowired
AppLogRepo _appLogRepo;
AppLog appLog = new AppLog();
appLog.setLogMsg(logMsg);
appLog.setCreateDate(new Date());
_appLogRepo.save(appLog);
}
Вот репозиторий JPA, который у меня есть:
public interface AppLogRepo extends JpaRepository<AppLog, Integer> {
}
Файл application.properties
preland.datasource.url=jdbc:sqlserver://persondbqa.testcmp.com;databaseName=personDb
preland.datasource.username=test-user
preland.datasource.password=test-password
preland.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
preland.datasource.platform=sqlserver
preland.datasource.initialize=false
preland.datasource.show-sql=true
preland.datasource.validation-query=select 1
preland.datasource.testOnBorrow=true
Пожалуйста, объясните мне, чего я действительно здесь скучаю.Заранее спасибо.