Hibernate自动生的SQL语句错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hibernate自动生的SQL语句错误相关的知识,希望对你有一定的参考价值。

用Hibernate3.0开发.
在用Criteria查询时SQL有错.指表不存在.
我的配置文件片断如下:
<hibernate-mapping>
<class name="dms.data.po.User" table="user" >
<id name="userId" type="long">
<column name="user_id" />
<generator class="native" />
</id>
<property name="loginId" type="string">
<column name="login_id" length="10" />
</property>
<property name="password" type="string">
<column name="password" length="100" />

Hibernate生成的SQL语句中表名变成了true.user
配置文件中,表名,类名检查过了N次,没错.而且是没catelog属性.
但一执行查询时就在前面多了一个"true.".

另外我用的是mysql.

我按wdjhz说的改一下表名,改为my_user.结果还是一样.

参考技术A 1.确定hibernate配置文件中配置的数据库是否弄错了。
2.看看映射文件中表名也就table是否弄错了。
3.看看<class name=包名.类名是否写错了。
如果以上问题解决了。
hql:FROM User
估计问题就发现了。

----
hibernate配置文件中配置的数据库是哪个
参考技术B 由于某些数据库user是作为关键字的,例如SQL Server

因此,hibernate在自动生成sql的时候会尽量避免这些字段
建议把你的表名改了,别叫user

弱弱问一句,你的数据库名是不是叫true?

mybatis与hibernate区别

Hibernate:hibernate是一个标准的ORM框架,不需要写sql语句,维护关系比较复杂,sql语句自动生成,对sql语句优化,修改比较困难。

Hibernate的优缺点:

优点:面向对象开发,不需要自己写sql语句。如果进行数据库迁移不需要修改sql语句,只需要修改一下方言。

缺点:hibernate维护数据表关系比较复杂。完全是有hibernate来管理数据表的关系,对于我们来说完全是透明的,不易维护。

Hibernate自动生成sql语句,生成sql语句比较复杂,比较难挑错。

Hibernate由于是面向对象开发,不能开发比较复杂的业务。

应用场景:

适合需求变化较少的项目,比如ERP,CRM等等

Mybatis框架对jdbc框架进行封装,屏蔽了jdbc的缺点,开发简单。

Mybatis只需要程序员关注sql本身,不需要过多的关注业务。对sql的优化,修改比较容易

适应场景:

适合需求变化多端的项目,比如:互联网项目

 

mybatis与hibernate重要区别

企业开发进行技术选型 ,考虑mybatis与hibernate适用场景。

 

mybatis:入门简单,程序容易上手开发,节省开发成本 。mybatis需要程序员自己编写sql语句,是一个不完全 的ORM框架,对sql修改和优化非常容易实现 。

mybatis适合开发需求变更频繁的系统,比如:互联网项目。

 

hibernate

以上是关于Hibernate自动生的SQL语句错误的主要内容,如果未能解决你的问题,请参考以下文章

SQL 语句中的 Spring Boot Hibernate 语法错误

MyBatis与Hibernate比较

得到错误 org.h2.jdbc.JdbcSQLSyntaxErrorException:找不到序列“HIBERNATE_SEQUENCE”; SQL 语句:

mybatis与hibernate区别

mybatis与hibernate区别

mybatis与hibernate区别