У меня есть док-контейнер, работающий с базой данных postgres. Контейнер также создает базу данных, таблицу и некоторые тестовые данные. У меня также есть приложение спящего режима с весенней загрузкой, которое может подключаться к БД. Однако я не могу выполнить какие-либо запросы и получить какие-либо данные.
Я проверил, чтобы убедиться, что я подключен к правильному БД, изменив значения в моем файле application.properties на имя БД, которое не существует - приложение Java работает, когда я возвращаюсь к правильному имени БД.
Я также указал spring.jpa.show-sql = true
в моем файле application.properties, это выводит команду sql. Когда я запускаю это вручную на postgres, он возвращает данные.
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@RestController
public class HelloController {
@Autowired
private AccountService accountService;
@RequestMapping("/hi/{id}")
public String hi(@PathVariable("id") int index) {
return "Hi " + accountService.get(index).getName();
}
@RequestMapping("/all")
public List<String> hey() {
List<String> everyOne = new ArrayList<>();
for (Account account : accountService.list()) {
everyOne.add(account.getName());
}
return everyOne;
}
}
@Service
public class AccountService {
@Autowired
private AccountRepository accountRepository;
public List<Account> list() {
return accountRepository.findAll();
}
public Account get(int index) {
return accountRepository.getOne(index);
}
}
@Repository
public interface AccountRepository extends JpaRepository<Account, Integer> {
}
@Entity
public class Account {
@Id
private int id;
private String name;
public Account() { }
public Account(int id, String name) {
super();
this.id = id;
this.name = name;
}
public int getId() {
return this.id;
}
public String getName() {
return this.name;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
}
spring.datasource.url=jdbc:postgresql://localhost:5432/db
spring.datasource.username= postgres
spring.datasource.password=
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto = update
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation = true
spring.jpa.show-sql = true
Пока приложение работает, если я сверну http://localhost:8080/all,, я бы ожидал, что будут возвращены все данные в таблице Account.
Когда я скручиваюсь http://localhost:8080/hi/2, я получаю сообщение об ошибке, говорящее
'avax.persistence.EntityNotFoundException: невозможно найти
com.something.models.Account с идентификатором 2 '
Так как я могу подключаться к БД через режим гибернации и получать данные при ручном запуске команд sql, которые генерирует hibernate в командной строке psql, я уверен, что здесь просто упущено что-то простое. Любая помощь здесь будет принята с благодарностью.