上下文:
我正在尝试在我的数据库和我的应用程序之间建立连接,该应用程序运行在k8s上,全部运行在DigitalOcean上。我的数据库正在接受所有传入连接,以便立即进行测试。这使我能够让应用程序在本地运行,但仍通过Hibernate连接到我的远程数据库。数据库与实体一样称为"用户"。而不是"users "或" Users ",我没有像在我发现的问题中那样为表或实体使用注解。
问题:
本地运行完全没有问题--它运行查询没有任何问题,但是当我的k8s pod应用程序试图运行查询时,出现了下面的错误:
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: User is not mapped [SELECT c from User c WHERE c.email = :email]
at org.hibernate.hql.internal.ast.QuerySyntaxException.generateQueryException(QuerySyntaxException.java:79)
at org.hibernate.QueryException.wrapWithQueryString(QueryException.java:103)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:220)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:144)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:113)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:73)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:162)
at org.hibernate.internal.AbstractSharedSessionContract.getQueryPlan(AbstractSharedSessionContract.java:622)
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:734)
... 26 common frames omitted
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: User is not mapped
at org.hibernate.hql.internal.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:169)
at org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:91)
at org.hibernate.hql.internal.ast.tree.FromClause.addFromElement(FromClause.java:77)
当然,它并不局限于实体"User"及其所有表,这只是一个示例,因为它是登录用例中的第一个查询。
我的User类中的一小段代码:
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "system-uuid")
@Column(name = "id", nullable = false)
@GenericGenerator(name = "system-uuid", strategy = "uuid")
private String id;
private String firstname;
private String lastname;
private String organizationID;
private String email;
private String password;
private boolean isActivated;
...
我的问题:
为什么它在本地工作而不是在我的pod中?对我来说,它似乎与连接没有任何关系,或者我不正确?
先谢了,希望很快能得到答复。
问候你亚历克斯
1条答案
按热度按时间nkkqxpd91#
我不知道你是如何打包/部署你的应用程序的,但是这个错误意味着Hibernate不知道实体类。可能是你丢失了一个persistence.xml。可能是你部署的JAR/WAR文件不包含实体类。