I'm getting org.hibernate.hql.internal.ast.QuerySyntaxException
when trying to execute a query with EntityManager.
I'm using Hibernate standalone in a Java SE application. I'm not using XML configuration.
This is how I get my session and EntityManager (settings variable is a Map<String, String>
):
StandardServiceRegistryBuilder registryBuilder = new StandardServiceRegistryBuilder();
registryBuilder.applySettings(settings);
registry = registryBuilder.build();
MetadataSources sources = new MetadataSources(registry);
Metadata metadata = sources.getMetadataBuilder().build();
sessionFactory = metadata.getSessionFactoryBuilder().build();
Session session = sessionFactory.openSession();
EntityManager em = session.getEntityManagerFactory().createEntityManager();
This is my entity class:
@Entity
@Table(name = "playeraccount")
public class PlayerAccount {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "playerId")
private String playerId;
@Column(name = "balance")
private Double balance;
[getters, setters...]
}
The table SQL:
CREATE TABLE PlayerAccount (
id BIGINT NOT NULL UNIQUE PRIMARY KEY,
playerId VARCHAR(255) NOT NULL UNIQUE,
balance DOUBLE NOT NULL DEFAULT 0.0
);
And finally the query:
TypedQuery<PlayerAccount> q = em.createQuery("SELECT a FROM PlayerAccount a WHERE a.playerId = :uuid", PlayerAccount.class);
q.setParameter("uuid", uuid);
PlayerAccount acc = q.getSingleResult();
Whole exception is:
java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: PlayerAccount is not mapped [SELECT a FROM PlayerAccount a WHERE a.playerId = :uuid]