oracle дБ - версия 12 c. Я использую разъем ojdbc8. Мне был предоставлен только доступ к аккаунту, назовем его схемой «USR». Авторизуйтесь с помощью USR, я вижу таблицы другой схемы, назовем ее схемой "ADM". Есть таблица "TGT_TABLE", которую я хочу сопоставить с JPA внутри схемы ADM. А под консолью USR я могу запросить «select * from ADM.TGT_TABLE», чтобы получить правильный результат. Теперь я записываю класс Entity как:
@Data
@Entity
@Table(name = "ADM.TGT_TABLE") // or @Table(name = "TGT_TABLE") , Neither worked
public class ApiHeaderLogs {
@Id
@Column(name = "id")
String id;
....
и мою конфигурацию:
spring.jpa.hibernate.ddl-auto=none
# Oracle settings
spring.datasource.url=jdbc:oracle:thin:@10.119.125.70:1540:dhtlm4
spring.datasource.username=USR
spring.datasource.password=******
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
и мой тест:
Optional<ApiHeaderLogsEntity> ahl = apiHeaderLogsService.findById(id);
Я получил ошибку:
org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet
....
Caused by: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist
и запрос SQL в консоли:
select ... from adm_tgt_table where ... //@Table(name = "ADM.TGT_TABLE")
или
select ... from tgt_table where ... //@Table(name = "TGT_TABLE")
Очевидно, что он не обращается к таблице ADM.TGT_TABLE. Как я могу сопоставить с ADM.TGT_TABLE? Мой опыт был в основном на MySQL, который не имеет учетной записи, связанной с доступом к схеме, и мой коллега уже предложил решение, использующее JDB C напрямую ... которого я действительно хочу избежать, пожалуйста, дайте мне знать, если есть правильная способ справиться с этим, спасибо