Исключение при сохранении записи даже с разрешения WRITE. Говорит "В разрешении INSERT было отказано ..." - PullRequest
0 голосов
/ 18 марта 2019

Я использую 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

Пожалуйста, объясните мне, чего я действительно здесь скучаю.Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...