Я пытаюсь использовать JPA для выполнения простого запроса get внутри микропрофилей затмения, таким образом:
Класс игрока:
@Entity
@Table(name = "player")
public class Player {...
Основной класс:
@ApplicationScoped
@Path("/hello2")
public class HelloWorld extends Application {
@Path("/players")
@GET
public List<Player> getPlayers() {
EntityManager entityManager = Persistence.createEntityManagerFactory("testMicroProfile").createEntityManager();
EntityTransaction transaction = entityManager.getTransaction();
List<Player> list = null;
transaction.begin();
TypedQuery<Player> query = entityManager.createQuery("SELECT p FROM Player p", Player.class);
list = query.getResultList();
transaction.commit();
return list;
}
}
И это файл persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="testMicroProfile" transaction-type="RESOURCE_LOCAL">
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/microprofiledb"/>
<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>
<property name="javax.persistence.jdbc.user" value="user"/>
<property name="javax.persistence.jdbc.password" value="psw"/>
</properties>
</persistence-unit>
</persistence>
Имя таблицы в базе данных - player
, но я прочитал в другом ответе на stackoverflow, что мне пришлось использовать имякласса внутри запроса, поэтому я изменил его в «Player», но все равно не работает.Чего не хватает?