Java 休眠异常:未映射表
我试图用hibernate连接到Postgres,但我得到一个异常,表没有映射。以下是代码: hibernate.cfg.xmlJava 休眠异常:未映射表,java,hibernate,postgresql,maven,Java,Hibernate,Postgresql,Maven,我试图用hibernate连接到Postgres,但我得到一个异常,表没有映射。以下是代码: hibernate.cfg.xml <!DOCTYPE hibernate-configuration SYSTEM "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <pr
<!DOCTYPE hibernate-configuration SYSTEM
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.PostgreSQL94Dialect</property>
<property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
<property name="hibernate.connection.username">username</property>
<property name="hibernate.connection.password">passwrd</property>
<property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/dbname</property>
<property name="hibernate.hbm2ddl.auto">create</property>
<property name="connection.pool_size">1</property>
<property name="show_sql">true</property>
<mapping class="backend.hibernate.models.UsersEntity"/>
</session-factory>
pom:
5.0.3.4最终版本
9.4-1200-jdbc4
org.hibernate
休眠实体管理器
${hibernate.version}
org.postgresql
postgresql
${postgresql.version}
朱尼特
朱尼特
3.8.1
测试
错误:
Exception in thread "main" org.hibernate.hql.internal.ast.QuerySyntaxException: UsersModel is not mapped [select login from UsersModel]
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:218)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:142)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:115)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:76)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:150)
at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:298)
at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:236)
at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1836)
at Fronted.Main.main(Main.java:23)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: UsersModel is not mapped
at org.hibernate.hql.internal.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:171)
at org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:91)
at org.hibernate.hql.internal.ast.tree.FromClause.addFromElement(FromClause.java:76)
at org.hibernate.hql.internal.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:321)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3678)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:3567)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:708)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:564)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:301)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:249)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:262)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:190)
... 13 more
线程“main”org.hibernate.hql.internal.ast.QuerySyntaxException中的异常:UsersModel未映射[从UsersModel选择登录]
位于org.hibernate.hql.internal.ast.QuerySyntaxException.generateQueryException(QuerySyntaxException.java:79)
位于org.hibernate.QueryException.wrapWithQueryString(QueryException.java:103)
位于org.hibernate.hql.internal.ast.QueryTranslatorImpl.docomFile(QueryTranslatorImpl.java:218)
位于org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:142)
在org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:115)
在org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:76)
位于org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:150)
位于org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:298)
位于org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:236)
位于org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1836)
在Fronted.Main.Main(Main.java:23)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:497)
位于com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
原因:org.hibernate.hql.internal.ast.QuerySyntaxException:未映射UsersModel
位于org.hibernate.hql.internal.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:171)
位于org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:91)
位于org.hibernate.hql.internal.ast.tree.FromClause.addFromElement(FromClause.java:76)
位于org.hibernate.hql.internal.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:321)
位于org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3678)
位于org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:3567)
位于org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:708)
位于org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:564)
位于org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:301)
位于org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:249)
位于org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:262)
位于org.hibernate.hql.internal.ast.QueryTranslatorImpl.docomFile(QueryTranslatorImpl.java:190)
... 还有13个
主要内容:
公共类主{
公共静态void main(字符串[]args){
配置=新配置().configure();
StandardServiceRegistryBuilder=新的StandardServiceRegistryBuilder()。应用程序设置(配置
.getProperties());
SessionFactory SessionFactory=configuration.buildSessionFactory(builder.build());
Session Session=sessionFactory.openSession();
session.beginTransaction();
List List=session.createQuery(“来自UsersEntity”).List();
session.close();
系统输出打印项次(列表);
}
}
在我的数据库中,有一个名为“Users”的表,其列与UsersEntity注释中的列类似。我认为,映射是正确的,但我仍然得到相同的错误。感谢您的帮助错误很明显“UsersModel未映射”。这意味着您正试图在查询中使用一个尚未进行任何映射的类
您正在查询UsersModel
,查询内容如下:
List<UsersModel> list = session.createQuery("select login from UsersModel").list();
您应该执行以下查询:
List<UsersEntity> list = session.createQuery("select login from UsersEntity").list();
// Map from UsersEntity to UsersModel if needed
List List=session.createQuery(“从UsersEntity选择登录”).List();
//如果需要,从UsersEntity映射到UsersModel
错误很明显“UsersModel未映射”。这意味着您正试图在查询中使用一个尚未进行任何映射的类
您正在查询UsersModel
,查询内容如下:
List<UsersModel> list = session.createQuery("select login from UsersModel").list();
您应该执行以下查询:
List<UsersEntity> list = session.createQuery("select login from UsersEntity").list();
// Map from UsersEntity to UsersModel if needed
List List=session.createQuery(“从UsersEntity选择登录”).List();
//如果需要,从UsersEntity映射到UsersModel
可能在hibernate.cfg.xml中映射了错误的类名
在xml中:
<mapping class="backend.hibernate.models.UsersModel"/>
尝试按以下方式更改您的xml:
<mapping class="backend.hibernate.models.UsersEntity"/>
可能在hibernate.cfg.xml中映射了错误的类名 在xml中:
<mapping class="backend.hibernate.models.UsersModel"/>
尝试按以下方式更改您的xml:
<mapping class="backend.hibernate.models.UsersEntity"/>
使用实体名称作为
UsersEntity
因此,请在hibernate.cfg.xml中从
<mapping class="backend.hibernate.models.UsersModel"/>
到
主要的变化是:从
List<UsersModel> list = session.createQuery("select login from UsersModel").list();
List List=session.createQuery(“从UsersModel选择登录”).List();
到
List List=session.createQuery(“从UsersEntity选择登录”).List();
使用实体名称作为
UsersEntity
因此,请在hibernate.cfg.xml中从
<mapping class="backend.hibernate.models.UsersModel"/>
到
主要的变化是:从
List<UsersModel> list = session.createQuery("select login from UsersModel").list();
List List=session.createQuery(“从UsersModel选择登录”).List();
到
List List=session.createQuery(“从UsersEntity选择登录”).List();
也可以通过以下方式以编程方式添加:
Configuration configuration = new Configuration();
configuration.configure("hibernate-local-query-test.cfg.xml");
configuration.addAnnotatedClass(ClassName.class);
也可以通过以下方式以编程方式添加:
Configuration configuration = new Configuration();
configuration.configure("hibernate-local-query-test.cfg.xml");
configuration.addAnnotatedClass(ClassName.class);
查询
“从UsersModel选择登录”
仍将引发异常。请将查询更改为“从UsersEntity选择登录”
。我忘了是什么时候