爪哇2博客
爪哇2博客

Eclipse中的Hibernate Hello World示例

这是教程系列的8个部分中的2个

教程内容:

在基本了解hibernate框架之后。我们准备开始使用hibernate。在本文中,我们将在eclipse中配置hibernate并编写我们的第一个hibernate程序。要配置hibernate,您需要在系统上具备一些先决条件。

  1. 下载 休眠框架。(我在这里使用的是最新的休眠版本4.1.9)
  2. 下载任何数据库。(我在这里使用sql server 2005)
  3. 下载用于数据库的JDBC驱动程序(我已经下载了 sql server 2005的jdbc驱动程序)
  4. 日食ide
  5. JDK 1.5或更高

Now,In eclipse IDE,click 上 File->新

单击其他,然后选择java项目


单击下一步并写项目名称。我在这里写过“Hibernate4HelloWorldProject”

单击完成,现在我们的项目已创建
Create 新 folder “jars” under src folder so for that right click 上 project->新->folder

将文件夹名称写为“jars”

单击完成,将在src文件夹中创建empy jar文件夹。
Now we will add 的 冬眠的 4 libraries 至 的 project. Extract 的 “hibernate-release-4.1.9.Final” file if you have 不 extracted. Now go 至 的 “hibernate-release-4.1.9.Final->lib->回覆quired” directory 和 的n copy 所有 的 jar files (Ctrl+C) 和 paste 上 的 罐子 Eclipse IDE中(我们项目的)目录。
还要下载数据库的jdbc驱动程序并将该jar复制到 罐子
注意:上述jar文件的位置可能因版本而异。因此,如果您使用的是4.1.9以外的版本,则需要查找该版本的jar。

Now add 所有 的 罐子 至 “Java Build Path”. Right click 上 的 “Hibernate4HelloWorldProject” 在 project explorer 和 的n select properties. Then select “Java Build Path” –> Libraries 和 的n click 上 的 “Add JARs” button. And add 所有 的 libraries 至 爪哇 Build Path.

单击确定。
您已经完成了在eclipse中配置休眠的操作。

现在我们将编写第一个hibernate应用程序。有关在eclipse中配置hibernate的信息,请参阅上一篇文章。我正在使用SQL Server 2005作为数据库。

We will make 用户表 表 在 数据库 using 冬眠的.

我们将创建User.java,以在数据库中创建以上表格。

1.User.java(实体)

实体可以视为轻量级的持久性域对象。实体在关系数据库中定义一个表,并且实体的每个实例对应于该表中的一行。实体是指可以整体存储或检索的逻辑数据集合。
Create a 新 包 组织.arpit.javapostsforlearning 至 hold 的 爪哇 files. Right click 上 的 “src” folder 和 的n select New –> Package. Then provide 的 包 名称 as 组织.arpit.javapostsforlearning 和 click 上 的 “Finish” button.
创建一个新的Java文件 用户.java 在包装下 组织.arpit.javapostsforlearning 并添加以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
组织.Arpit.爪哇postsforlearning;
 
进口 爪哇x.坚持不懈.;
进口 爪哇x.坚持不懈.实体;
进口 爪哇x.坚持不懈.产生价值;
进口 爪哇x.坚持不懈.ID;
 
@实体(名称="用户表")
上市 用户 {
@ID
整型 用户身份;
@(名称="用户名")
用户名;
利用rMessage;
上市 整型 getUserId() {
  返回 用户身份;
}
上市 虚空 setUserId(整型 用户身份) {
  这个.用户身份 = 用户身份;
}
上市 getUserName() {
  返回 用户名;
}
上市 虚空 setUserName( 用户名) {
  这个.用户名 = 用户名;
}
上市 getUserMessage() {
  返回 利用rMessage;
}
上市 虚空 setUserMessage( 利用rMessage) {
  这个.利用rMessage = 利用rMessage;
}
  
}
 

@Entity用于创建持久性pojo类。对于此Java类,您想要在数据库中创建表。
@Entity(名称=”User_table”)指定创建一个名为“User_table” 在 数据库

2.Hibernate配置XML:

在eclipse中配置休眠后,我们需要配置“hibernate.cfg.xml”用于数据库配置和其他相关参数。默认情况下,休眠模式在项目中搜索配置文件’s的根目录。创建一个名为“hibernate.cfg.xml” 在 src一个文件夹。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
<冬眠的-组态>
 
  <会议->
 
  <!- 数据库 连接 设定 ->
  <属性 名称=“ 连接.driver_class”>com.微软.sqlserver.数据库.的SQLServerDriver</属性>
  <属性 名称=“ 连接.url”>数据库:sqlserver:// localhost:1433; 数据库 = 用户Info</property>
  <属性 名称=“ 连接.username”>SA </属性>
  <属性 名称=“ 连接.password”></属性>
 
  <!- JDBC 连接 池子 (利用 已建-) ->
  <属性 名称=“ 连接.pool_size”>1</属性>
 
  <!- 的SQL 方言 ->
  <属性 名称=“方言”>组织.冬眠的.方言.的SQLServer2005方言</属性>
 
  <!- 回声 所有 被执行 的SQL 标准输出 ->
  <属性 名称=“ show_sql”>真正</属性>
 
  <!- 下降 回覆-创造 数据库 图式 启动 ->
  <属性 名称=“ hbm2ddl.auto”>创造</属性>
 
    <映射 =“ 组织.arpit.javapostsforlearning.User”></映射>
 
  </会议->
 
</冬眠的-组态>
 

:一个 需要指定JDBC驱动程序类。
Â:指定数据库实例的JDBC URL。
 ” >:Specify 数据库 利用rname
” >:Specify 数据库 password
” >:This 属性 makes 冬眠 generate 的 appropriate 的SQL for 的 chosen 数据库.
冬眠的.connection.pool_size ” >:This 属性 limits 的 number of 连接s waiting 在 的 冬眠 数据库 连接 池子.
” >:If you specify 这个 属性 至 be 真正 的n 所有 sql statement will be printed 至 console.
” >:It specify operation 上 your 数据库 图式.Whether 至 下降 和 回覆create your 数据库 图式 or update current 图式.
 >:Here you need 至 specify 所有 爪哇 类es for which you want 至 创造 a 表 在 数据库.You need 至 specify 所有 entity 类es here.

 

3,主班:

创建一个名为的类“HibernateMain.java” 在 src->组织.arpit.javapostsforlearning
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
组织.Arpit.爪哇postsforlearning;
 
进口 组织.冬眠的.届会;
进口 组织.冬眠的.会话工厂;
进口 组织.冬眠的.CFG.组态;
进口 组织.冬眠的.服务.服务注册;
进口 组织.冬眠的.服务.服务注册Builder;
 
上市 休眠主 {
 
上市 静态的 虚空 主要([] args) {
    
  组态 组态= 组态();
  组态.配置();
  服务注册 sr= 服务注册Builder().applySettings(组态.getProperties()).buildServiceRegistry();
  会话工厂 科幻=组态.buildSessionFactory(sr);
  
  用户 利用r1= 用户();
  利用r1.setUserName(“阿尔伯特”);
  利用r1.setUserMessage(“你好世界来自arpit”);
  
  用户 利用r2= 用户();
  利用r2.setUserName(“安吉塔”);
  利用r2.setUserMessage(“来自ankita的你好世界”);
  届会 ss=科幻.openSession();
  ss.beginTransaction();
//将对象保存到会话
  ss.保存(利用r1);
  ss.保存(利用r2);
  ss.getTransaction().承诺();
  ss.();
  
}
 
}
 

正如我们在上一篇文章中讨论的那样,我们必须创建SessionFactory实例才能与Hibernate中的Database通信

项目结构:

4,运行它:

当您运行该应用程序时,您将获得以下输出。

1
2
3
4
5
6
7
8
 
冬眠: 下降 用户表
冬眠: 创造 用户表 (用户身份 整型 身份 空值, 利用rMessage varchar(255), 用户名 varchar(255), (用户身份))
一月 29, 2013 9:38:32 下午 组织.冬眠的.工具.hbm2ddl.模式导出 执行
信息: HHH000230: 架构图 出口 完成
冬眠: 进入 用户表 (利用rMessage, 用户名) 价值观 (?, ?)
冬眠: 进入 用户表 (利用rMessage, 用户名) 价值观 (?, ?)
 

After execution of above program,you can check 用户表 表 在 your 数据库.

5.SQL输出:

源代码:

点击开始
6.1 MB .zip

分享这个

作者

关注作者

相关文章

Comments

  1. 由于配置xml文件,代码无法正常工作。

    错误是:

    2013年5月29日,下午5:02:55 组织.hibernate.annotations.common.Version
    信息:HCANN000001:休眠公用注释{4.0.1.Final}
    2013年5月29日5:02:56 下午 组织.hibernate.Version logVersion
    信息:HHH000412:Hibernate 核心 {4.1.9.Final}
    2013年5月29日,下午5:02:56 组织.hibernate.cfg.Environment

    信息:HHH000206:找不到hibernate.properties
    2013年5月29日下午5:02:56 组织.hibernate.cfg.Environment buildBytecodeProvider
    信息:HHH000021:字节码提供程序名称:javassist
    2013年5月29日,下午5:02:56 组织.hibernate.cfg.Configuration配置
    信息:HHH000043:从资源配置:/hibernate.cfg.xml
    2013年5月29日,下午5:02:56 组织.hibernate.cfg.Configuration getConfigurationInputStream
    信息:HHH000040:配置资源:/hibernate.cfg.xml
    线程异常“main”org.hibernate.HibernateException:无法解析配置:/hibernate.cfg.xml
    在org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2023)
    在org.hibernate.cfg.Configuration.configure(Configuration.java:1935)
    在org.hibernate.cfg.Configuration.configure(Configuration.java:1914)
    在org.arpit.javapostsforlearning.HibernateMain.main(HibernateMain.java:14)
    Caused by: 组织.dom4j.DocumentException: Error 上 line 2 of document : The document type declaration for 根 element type “hibernate-configuration” must end with '>'. Nested exception: The document type declaration for 根 element type “hibernate-configuration” must end with '>'.
    在org.dom4j.io.SAXReader.read(SAXReader.java:482)
    在org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2015)
    … 3 more

    //////////////////////////////////

    我使用的配置xml文件如下:


    com.microsoft.sqlserver.jdbc.SQLServerDriver 数据库:sqlserver:// localhost:1433; 数据库 = 用户Info SA

    1

    组织.hibernate.dialect.SQLServer2005Dialect

    真正

    创造

  2. 好的,我已经解决了。
    我需要在hibernate.cfg.xml文件中稍微增加一下dtd路径。

    感谢您的优秀教程。

    1. 嗨查理,

      即使我也遇到同样的错误。你怎么修好它的?
      你做了什么改变?

      提前致谢。

      瓦斯提。

        1. 在第二行中检查您的DTD。
          的re may be space 在 这个 – “http://hibernate.org/dtd/ 冬眠的-configuration-3.0.dtd”.Remove 的 white space if any.
          总是在完成xml文件后,尝试在IE中打开它。您可能会遇到类似这样的错误。

  3. ”SessionFactory 科幻 = 组态.buildSessionFactory(sr);”在HibernateMain.java中给出一个错误…说buildSessionFactory()不接受任何参数。
    什么's 的 problem am i missing any jar file or 什么?

      1. Hi —
        对于Hibernate 4.3.5,我使用:

        导入org.hibernate.service.ServiceRegistry;
        //导入org.hibernate.service.ServiceRegistryBuilder; <-- 回覆move 这个 ServiceRegistry 服务Registry = 新 StandardServiceRegistryBuilder().applySettings( 组态.getProperties() ).build(); SessionFactory 科幻 = 组态.buildSessionFactory(serviceRegistry);

    1. 用户.java文件中应该为userId变量附加一个@GeneratedValue注释:

      @ID
      @GeneratedValue
      整型 用户身份;

      和硬编码的userId赢了't be needed

  4. 确保正确配置。我遇到了相同的错误,但绕过了它。



    ……………..

    然后剩下的配置文件。祝好运!

  5. 请帮我
    我做了与上述相同的示例,并使用mysql服务器,并且确实更改了配置文件中的属性。

    2013年10月23日11:55:02 下午 组织.hibernate.annotations.common.Version
    信息:HCANN000001:休眠公共注释{4.0.2.Final}
    2013年10月23日11:55:02 下午 组织.hibernate.Version logVersion
    信息:HHH000412:Hibernate 核心 {4.2.6.Final}
    2013年10月23日,下午11:55:02 组织.hibernate.cfg.Environment

    信息:HHH000206:找不到hibernate.properties
    2013年10月23日11:55:02 下午 组织.hibernate.cfg.Environment buildBytecodeProvider
    信息:HHH000021:字节码提供程序名称:javassist
    2013年10月23日11:55:02 下午 组织.hibernate.cfg.Configuration配置
    信息:HHH000043:从资源配置:/hibernate.cfg.xml
    2013年10月23日11:55:02 下午 组织.hibernate.cfg.Configuration getConfigurationInputStream
    信息:HHH000040:配置资源:/hibernate.cfg.xml
    线程异常“main”org.hibernate.MappingException:无效的配置
    在org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2091)
    在org.hibernate.cfg.Configuration.configure(Configuration.java:2008)
    在org.hibernate.cfg.Configuration.configure(Configuration.java:1987)
    在org.arpit.javapostsforlearning.HibernateMain.main(HibernateMain.java:14)
    由以下原因引起:org.xml.sax.SAXParseException; lineNumber:1; columnNumber:25;文件无效:找不到语法。
    在com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(未知来源)
    在com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(未知来源)
    com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(未知来源)
    com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(未知来源)
    com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(未知来源)
    在com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(未知来源)
    在com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl $ NSContentDriver.scanRootElementHook(未知来源)
    在com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl $ FragmentContentDriver.next(未知来源)
    在com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl $ PrologDriver.next(未知来源)
    在com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(未知来源)
    在com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(未知来源)
    在com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(未知来源)
    在com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(未知来源)
    在com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(未知来源)
    在com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(未知来源)
    在com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(未知来源)
    在com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl $ JAXPSAXParser.parse中(未知来源)
    在org.dom4j.io.SAXReader.read(SAXReader.java:465)
    在org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2088)
    … 3 more

  6. SLF4J:slf4j-api 1.6.x(或更高版本)与此绑定不兼容。
    SLF4J:您的绑定版本为1.5.5或更早版本。
    SLF4J:将绑定升级到版本1.6.x。或2.0.x
    线程异常“main”java.lang.NoSuchMethodError:org.slf4j.impl.StaticLoggerBinder.getSingleton()Lorg / slf4j / impl / StaticLoggerBinder;
    在org.slf4j.LoggerFactory.bind(LoggerFactory.java:121)
    在org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:111)
    在org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:268)
    在org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:241)
    在org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:254)
    在org.hibernate.cfg.Configuration中。(Configuration.java:197)
    在dbtest.userTest.main(userTest.java:15)

    什么 was 的 provlem

  7. 它很容易理解,但是我对休眠非常了解,并且在使用您的教程时遇到以下异常。

    2014年1月3日,上午11:48:31 组织.hibernate.annotations.common.Version
    信息:HCANN000001:休眠公用注释{4.0.1.Final}
    2014年1月3日,上午11:48:31 组织.hibernate.Version logVersion
    信息:HHH000412:Hibernate 核心 {4.1.9.Final}
    2014年1月3日,上午11:48:31 组织.hibernate.cfg.Environment

    信息:HHH000206:找不到hibernate.properties
    2014年1月3日,上午11:48:31 组织.hibernate.cfg.Environment buildBytecodeProvider
    信息:HHH000021:字节码提供程序名称:javassist
    2014年1月3日,上午11:48:31 组织.hibernate.cfg.Configuration配置
    信息:HHH000043:从资源配置:/hibernate.cfg.xml
    2014年1月3日,上午11:48:31 组织.hibernate.cfg.Configuration getConfigurationInputStream
    信息:HHH000040:配置资源:/hibernate.cfg.xml
    线程异常“main”org.hibernate.MappingException:无效的配置
    在org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2018)
    在org.hibernate.cfg.Configuration.configure(Configuration.java:1935)
    在org.hibernate.cfg.Configuration.configure(Configuration.java:1914)
    在org.arpit.javapostsforlearning.Main.main(Main.java:14)
    由以下原因引起:org.xml.sax.SAXParseException; lineNumber:1; columnNumber:25;文件无效:找不到语法。
    在com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198)
    在com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134)
    在com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:437)
    在com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368)
    在com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:325)
    在com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:226)
    在com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl $ NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:602)
    在com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl $ FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3063)
    在com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl $ PrologDriver.next(XMLDocumentScannerImpl.java:881)
    在com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607)
    在com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116)
    在com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:488)
    在com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835)
    在com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
    在com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
    在com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1210)
    在com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl $ JAXPSAXParser.parse(SAXParserImpl.java:568)
    在org.dom4j.io.SAXReader.read(SAXReader.java:465)
    在org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2015)
    … 3 more

  8. 2014年5月15日下午5:10:10 组织.hibernate.annotations.common.Version
    信息:HCANN000001:休眠公用注释{4.0.1.Final}
    2014年5月15日下午5:10:10 组织.hibernate.Version logVersion
    信息:HHH000412:Hibernate 核心 {4.1.9.Final}
    2014年5月15日下午5:10:10 组织.hibernate.cfg.Environment

    信息:HHH000206:找不到hibernate.properties
    2014年5月15日下午5:10:10 组织.hibernate.cfg.Environment buildBytecodeProvider
    信息:HHH000021:字节码提供程序名称:javassist
    2014年5月15日下午5:10:10 组织.hibernate.cfg。配置配置
    信息:HHH000043:从资源配置:/hibernate.cfg.xml
    2014年5月15日,下午5:10:10 组织.hibernate.cfg.Configuration getConfigurationInputStream
    信息:HHH000040:配置资源:/hibernate.cfg.xml
    2014年5月15日,下午5:10:10 组织.hibernate.internal.util.xml.DTDEntityResolver 回覆solveEntity
    警告:HHH000223:公认的过时休眠名称空间 http://hibernate.sourceforge.net/。使用名称空间 http://www.hibernate.org/dtd/ 代替。请参阅《 冬眠 3.6迁移指南》!
    线程异常“main”org.hibernate.MappingException:无法加载在Hibernate配置中声明的类[org.arpit.javapostsforlearning.User] 条目
    在org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:2139)
    在org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:2087)
    在org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2067)
    在org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2020)
    在org.hibernate.cfg.Configuration.configure(Configuration.java:1935)
    在org.hibernate.cfg.Configuration.configure(Configuration.java:1914)
    在by.bsu.ramaniuk.HibernateMain.main(HibernateMain.java:14)
    引起原因:java.lang.ClassNotFoundException:org.arpit.javapostsforlearning.User
    在java.net.URLClassLoader $ 1.run(未知源)
    在java.net.URLClassLoader $ 1.run(未知源)
    在java.security.AccessController.doPrivileged(本机方法)
    在java.net.URLClassLoader.findClass(未知来源)
    在java.lang.ClassLoader.loadClass(未知来源)
    在sun.misc.Launcher $ AppClassLoader.loadClass(未知来源)
    在java.lang.ClassLoader.loadClass(未知来源)
    在java.lang.Class.forName0(本地方法)
    在java.lang.Class.forName(未知来源)
    在org.hibernate.internal.util.ReflectHelper.classForName(ReflectHelper.java:192)
    在org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:2136)
    … 6 more

    1. Hi —
      对于Hibernate 4.3.5,我使用:

      导入org.hibernate.service.ServiceRegistry;
      //导入org.hibernate.service.ServiceRegistryBuilder; <-- 回覆move 这个 ServiceRegistry 服务Registry = new StandardServiceRegistryBuilder().applySettings( 组态.getProperties() ).build(); SessionFactory 科幻 = 组态.buildSessionFactory(serviceRegistry); Read more at http://javapostsforlearning.blogspot.com/2013/01/

    1. 糟糕,我的意思是这是对上面帖子的回复。我在实际帖子中添加了正确的回复,因此请删除或忽略此帖子ðŸ™,谢谢!

  9. 有人帮我这个例外:

    组织.hibernate.exception.SQLGrammarException:无法执行语句
    在org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:123)
    在org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
    在org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126)
    在org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:112)
    在org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:190)
    在org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:62)
    在org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3124)
    在org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3581)
    在org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:104)
    在org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:463)
    在org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:349)
    在org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:350)
    在org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:56)
    在org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1222)
    在org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:425)
    在org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)上
    在org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:177)
    在hibernate.test.test.main(test.java:37)
    引起原因:org.postgresql.util.PSQLException:错误:关系“tbl_account” does 不 exist
    位置:13
    在org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2161)
    在org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1890)
    在org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
    在org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:559)
    在org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:417)
    在org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:363)
    在org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:187)
    … 13 more
    错误!细节:
    组织.hibernate.exception.SQLGrammarException无法执行语句

  10. 不要'在这里放端口号1433
    [jdbc:sqlserver:// MINHPHUONG-PC // 的SQLEXPRESS; 数据库 = 用户表]
    在hibernate.cfg.xml中

  11. 你好
    我正在使用mysql和spring eclipse。
    我是新来的冬眠。
    我得到这些错误。
    我需要帮助来解决错误。
    log4j:WARN找不到记录器的附加程序(org.jboss.logging)。
    log4j:WARN请正确初始化log4j系统。
    冬眠: 下降 表 if exists 用户表
    休眠:创建表User_table(userId整数不为null,userMessage varchar(255),User_Name varchar(255),主键(userId)))
    线程异常“main”org.hibernate.NonUniqueObjectException:具有相同标识符值的另一个对象已与会话相关联:[org.arpit.javapostsforlearning.User#0]
    在org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)
    在org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:137)
    在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:209)
    在org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:55)
    在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:194)
    在org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:49)
    在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90)
    在org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:715)
    在org.hibernate.internal.SessionImpl.save(SessionImpl.java:707)
    在org.hibernate.internal.SessionImpl.save(SessionImpl.java:702)
    在org.arpit.javapostsforlearning.HibernateMain.main(HibernateMain.java:55)

    休眠主.java

    包org.arpit.javapostsforlearning;

    导入org.apache.log4j.PropertyConfigurator;
    导入org.hibernate.Session;
    导入org.hibernate.SessionFactory;
    导入org.hibernate.boot.registry.StandardServiceRegistryBuilder;
    导入org.hibernate.cfg.Configuration;
    导入org.hibernate.service.ServiceRegistry;
    导入org.hibernate.service.ServiceRegistryBuilder;

    公共类HibernateMain {

    上市 静态的 虚空 主要(String[] args) {

    配置conf = 新 组态();
    conf.configure();

    服务注册 服务Registry =新的StandardServiceRegistryBuilder()。applySettings(conf.getProperties()).build();

    会话工厂 科幻 = conf.buildSessionFactory(serviceRegistry);

    用户user1 = 新 用户();
    利用r1.setUserName(“vinod”);
    利用r1.setUserMessage(“来自Vinod的Hello World”);

    用户user2 = 新 用户();
    利用r2.setUserName(“raaj”);
    利用r2.setUserMessage(“来自Vinodaraaj的Hello World”);
    会话ss = 科幻.openSession();
    ss.beginTransaction();
    //将对象保存到会话
    ss.save(user1);
    ss.save(user2);
    ss.getTransaction()。commit();
    ss.close();

    }

    }

    实体:User.java
    包org.arpit.javapostsforlearning;

    导入javax.persistence.Column;
    导入javax.persistence.Entity;
    导入javax.persistence.GeneratedValue;
    导入javax.persistence.Id;

    @Entity(名称=”User_table”)
    公共类用户{
    @ID
    整型 用户身份;
    @Column(名称=”User_Name”)
    字符串userName;

    字符串userMessage;
    上市 整型 getUserId(){
    返回userId;
    }
    公共无效setUserId(int 用户身份){
    这个.userId = 用户身份;
    }
    公共字符串getUserName(){
    返回用户名;
    }
    公共无效setUserName(String 用户名){
    这个.userName =用户名;
    }
    公共字符串getUserMessage(){
    返回userMessage;
    }
    公共无效setUserMessage(String 利用rMessage){
    这个.userMessage = 利用rMessage;
    }

    }

    冬眠config xml,



    com.mysql.jdbc.Driver 数据库:mysql://本地主机:3306 / test MySQL的

    1

    组织.hibernate.dialect.MySQLDialect

    真正 创造

    想念你的时间。

    1. 您的错误是因为将具有相同主键的对象添加到数据库,您可以通过以下方法简单地解决该问题:
      1.将用户ID添加到对象,例如
      利用r1.setUserId(2)
      2.将自动增量设置为数据库中的主键,然后向“类用户”输入以下注释:
      @GeneratedValue(strategy = GenerationType.AUTO)

      希望能帮助到你

  12. 你好
    我正在使用mysql和spring eclipse。
    我是新来的冬眠。
    我现在只有这个警告..

    log4j:WARN找不到记录器的附加程序(org.jboss.logging)。
    log4j:WARN请正确初始化log4j系统。

    想念你的时间。

    1. 喂伙计,

      检查log4j.xml文件中是否有org.jboss.logging类的附加器。
      检查附加器是否存在及其关联的类别定义(在文件的底部)。

      祝好运

  13. 如果我不这样做't在usedId属性之前添加@GeneratedValue批注,然后我得到一个非唯一对象休眠异常。
    除此之外,它还可以。

  14. 1)解决无法识别的问题“hibernate.cfg.xml”项目中的文件我将文件移到src目录中。然后工作正常。

    2)当使用带有此代码的MySQL服务器时,我通过使用以下属性修复了连接错误。

    com.mysql.jdbc.Driver 数据库:mysql:// localhost / 用户Info ***

    希望这对使用MySQL的人有所帮助。
    非常感谢本教程。

  15. 在运行您的示例时,我有一个错误。

    线程异常“main”org.hibernate.NonUniqueObjectException:具有相同标识符值的另一个对象已与该会话关联:[com.arasu.hibernate.row.insertion.BookStore#0]
    在org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)
    在org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:137)
    在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:209)
    在org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:55)
    在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:194)
    在org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:49)
    在org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90)
    在org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:715)
    在org.hibernate.internal.SessionImpl.save(SessionImpl.java:707)
    在org.hibernate.internal.SessionImpl.save(SessionImpl.java:702)
    在com.arasu.hibernate.row.insertion.HibernateBookStoreMain.main(HibernateBookStoreMain.java:30)

  16. 2015年6月9日,上午10:57:37 组织.hibernate.annotations.common.reflection.java.JavaReflectionManager
    信息:HCANN000001:休眠公用注释{4.0.5.Final}
    2015年6月9日,上午10:57:37 组织.hibernate.Version logVersion
    信息:HHH000412:Hibernate 核心 {4.3.10.Final}
    2015年6月9日,上午10:57:37 组织.hibernate.cfg.Environment

    信息:HHH000206:找不到hibernate.properties
    2015年6月9日,上午10:57:37 组织.hibernate.cfg.Environment buildBytecodeProvider
    信息:HHH000021:字节码提供程序名称:javassist
    2015年6月9日,上午10:57:37 组织.hibernate.cfg.Configuration配置
    信息:HHH000043:从资源配置:/hibernate.cfg.xml
    2015年6月9日,上午10:57:37 组织.hibernate.cfg.Configuration getConfigurationInputStream
    信息:HHH000040:配置资源:/hibernate.cfg.xml
    线程异常“main”org.hibernate.HibernateException:无法解析配置:/hibernate.cfg.xml
    在org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2165)
    在org.hibernate.cfg.Configuration.configure(Configuration.java:2077)
    在org.hibernate.cfg.Configuration.configure(Configuration.java:2056)
    在com.sadiq.HibernateMain.main(HibernateMain.java:14)
    引起原因:org.dom4j.DocumentException:文档第2行出错:处理指令目标匹配“[xX][mM][lL]”不被允许。嵌套异常:处理指令目标匹配“[xX][mM][lL]” is 不 所有owed.
    在org.dom4j.io.SAXReader.read(SAXReader.java:482)
    在org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2157)
    … 3 more

    我收到此错误。如何解决?

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

订阅我们的新闻

获取质量教程到您的收件箱。现在订阅。


让我们成为朋友

©2020 爪哇2博客