Hibernate反向工程无法选择
Hibernate出错总结
错误1:-----------------------------------------------------------------------------------------------------------------No getter method for property XXXX of bean异常如下:No getter method for property XXXX of beanorg.apache.struts.taglib.html.BEAN在网上找了不少资料.中文的英文的.出现这个异常的还真不少.大部分都是在用select标签的时候...提示都是找不到属性的getter方法,可是我发现.出现这个问题的属性全都有getter方法!!不排除有一部分大小写字母写错的原因.可是这个问题不是那么简单.因为我敢保证我的拼写没有错误.最后恢复正常的时候我都不知道为什么.只不过我一气之下全改小写了!竟然好用了.经验之谈:1.写代码的时候一定要小心.一般小心都不行.2.不要过分相信系统.也不要过分的不相信自己.系统出错的几率也是很大的.3.英文一定要学好.4.google比baidu 好用.看来真的是java命名规范问题,我改了好多处命名,这回到底是出来了-------------------------------------------------------------------------------------------------------------------错误2:当struts中转向另外一个页面时,css会引入错误怎么办呢?在head中加入这个就可以了:<html:base />在开始还要加入<%@ taglib uri="/tags-html" prefix="html"%>这样就ok-----------------------------------------------------------------------------------------------------------------错误3<bean:write>不能显示Integer,BigDecimal等类型的属性问题的解决在用struts标签bean:write name=".." property=".."/ 显示Integer ,BigDecimal类型的属性时,会报javax.servlet.jsp.JspException: Cannot find message resources under key org.apache.struts.action.MESSAGEatorg.apache.struts.taglib.TagUtils.retrieveMessageResources(TagUtils.ja va:1252)at org.apache.struts.taglib.TagUtils.message(TagUtils.java:1101) at org.apache.struts.taglib.TagUtils.message(TagUtils.java:1076) atorg.apache.struts.taglib.bean.WriteTag.retrieveFormatString(WriteTag. java:254)atorg.apache.struts.taglib.bean.WriteTag.formatValue(WriteTag.java:317) atorg.apache.struts.taglib.bean.WriteTag.doStartTag(WriteTag.java:232) at org.apache.jsp.client$jsp._jspService(client$jsp.java:379)atorg.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)atorg.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspSer vlet.java:201)atorg.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:381) atorg.apache.jasper.servlet.JspServlet.service(JspServlet.java:473)这样的错误解决的办法就是利用 bean:write 的format属性,加上一个format="#" 属性bean:write name="testForm" property="testBig" format="#"/BigDecimal型数据处理bean:write name="testForm" property="testInt" format="#" /Intger型数据处理关于format还有不少很好的妙用比如你要显示的日期格式为年-月-日时:分:秒,则可以定义为format="yyyy-MM-dd HH:mm:ss"比如你要定义显示到小数点后几位,则可以定义为format="000.00"错误4.Exception thrown by getter for property pages of beanorg.apache.struts.taglib.html.BEAN解答:public String getPages(){return this.getPages();}这里不对吧,变成递归了,呵呵return this.pages;常用错误总结:7.int 类型字符过长com.mysql.jdbc.exceptions.MySQLDataException: '2.5026744582E10' in co lumn '1' is outside valid range for the datatype INTEGER.8.没找到错误没影响数据读取java.sql.SQLExceptio n: Operatio n not allowed after ResultSet closed9.类型错误最常见的是数字类型错误Data truncated for column 'gatheringMoney' at row 1struts错误Failed to obtain specified co llection 下拉框没值警告: No FormBeanConfig found under 'yuanLiaoRuKuForm' 配置文件Form出错Cannot find bean: "org.apache.struts.taglib.html.BEAN" in any scope <html:text >标签外面没有嵌套<html:form >标签9. 若在数据库中创建了两个sequence ,运行时出现异常可能是先后执行了多次select语句,导致与原有的序列号产生冲突12. MappingNotFoundExceptiona) Maybe: In the Eclipse Not refersh , or not exist in the dirctory13. HibernateException: /hibernate.cfg.xml not founda) Maybe1: hibernate.cfg.xml not in the root directoryb) Maybe2: Could not parse configuration .c) reso lve: database not connect or use another database14. ConstraintVio latio nExceptiona) Maybe: used a not true database15. 驱动没有找到或者 JDBC Driver not found可能:连接数据库的驱动jar包不存在或者版本不一致,比如将旧的版本换成新的会造成该类错误16. 空指针异常, ng.NullPointerExceptiona) 可能1:数据库连接出错,比如在hibernate.cfg.xml中的数据错误会导致异常。
通过Hibernate将数据库在myeclipse中逆向生成
通过Hibernate将数据库在myeclipse中逆向生成1.首先准备好数据库。
2.在MyEclipse的右上角切换透视图,切换到MyEclipse Database Explorer3.在最左边点击右键,选择New(也就是新建一个数据库连接),然后编写第一个页面,Driver template: MySQL Connector/J (因为是建立数据库连接)Driver name :icloud(这个名字随便起,方便以后使用)Connection URL :jdbc:myslq://localhost:3306/icloud?useUnicode=true& characterEncoding=UTF-8(这里如果最后地数据库,写localhost;如果在别的机子上,填写对方的ip;这个地方的 icloud是数据库的名称;当然后面还可以加一些配置,例如加密方式是统一的,都是用UTF-8进行加密)User name :root (数据库访问的用户名,mysql默认用户为root。
)Password:¥¥¥¥¥(设置数据库的密码)Driver JARs :点击Add JARs ,然后将mysql-connector-java-5.1.6-bin.jar添加进去,也可以是其他版本。
Driver classname:com.mysql.jdbc.Driver最后点击Test Driver,如果返回Database connection successfully established.说明第一步成功。
4.点击Next,进入第二个界面,选择第三个单选按钮(Display the selected Schemas),然后点击右边的Add按钮,也就是说添加你的数据库,然后点击完成按钮,这样你的数据库连接就创建好了。
5.切换到MyEclipse Java Enterprise 的透视图,创建一个Web Project,名字、保存路径什么的自己填写,我起来个icloud。
myeclipse hibernate反向工程图文教程
Myeclipse6.0 的hibernate反向工程第一步:建DB Browser方法一:Window -> Open Persipective -> MyEclipse Database Explorer以后步骤同二方法二: window / show view /other 选择如下图最后,点击OK,在工作空间上将会出现一个DB Browser的配置页面,在配置页面空白处,右键,选择New按钮在弹出的对话框当中配置数据库连接点完成即可点击my_driver 可以new 表等点connect to my_driver 可以new sql编辑器执行sql: 本次执行sql 例子如下:create table testUser(id int not null,username varchar(200),age int,primary key ("ID"))点击左上绿色按钮即可执行sql第二步:新建java工程(简单省略了),初始化Hibernate开发环境点击工程鼠标右键得到下图:Next (选择刚才你建立的db browser)Next 新进包名如图点击完成新的工程目录结构如下图所示:我们可以看到,系统自动给我们生成了HibernateSessionFactory.java及Hibernate.cfg.xml配置文件,并将Hibernate环境所需要的外部包文件也加入到CLASSPATH当中。
第三步:通过反向工程,生成POJO及hbm映射文件:在DB Browser配置界面,入进hibernate数据库,如下图所示:找到该用户下刚才所建的表将弹出如下的对话框,在Java package当中输入产生的hibernate映射的JavaBean为com.gjrencai.model,详细请参考下图点击Next>按钮,在新的对话框当中,在ID Generator的选项当中选择increment,表示ID为数据库自增长类型。
Eclipse下配置和使用Hibernate Tools
Eclipse下配置和使用Hibernate Tools文章分类:Web前端关键字: hibernate tools eclipse 插件配置Hibernate Tools可以通过访问已经建立好的数据库以反向工程方式生成POJO文件。
今天就来说一下如何使用Hibernate Tools来生成POJO。
1、首先,要去Hibernate的网站下载这个工具包。
一个大约14M的ZIP压缩文件。
/sourceforge/jboss/HibernateTools-3.2.4.Beta1-R200810311334.zip2、解压缩下载好的文件,释放出features和plugins这两个文件夹和其中的内容。
完成后将这两个文件夹复制到Eclipse的目录下(这两个文件夹在Eclipse中是默认存在的,直接复制就行了)。
3、到这步为止HibernateTools的安装就算结束了,下面开始配置和具体使用。
一开始选择工程下的SRC 目录,然后右键New->Other->Hibernate->Hibernate Configuration File(cfg.xml),在弹出的窗口中选择Next ,进入到下面的选项中。
注意,这个地方有几项是一定要填写的。
他们分别是Database dialect(数据库方言)、Driver class(数据库驱动)、Connection URL(链接字符串)以及Username和Password(访问数据库的用户名和密码)。
上图图中使用的是MySQL5数据库的配置,vane是我机器中已经创建好的数据库。
使用其他数据库的时候会略有不同。
填好之后选择Finish。
4、选择Eclipse的下拉菜单Window->Show View->Other->Hibernate->Hibernate Configurations,现在就可以查看Hibernate的配置窗口了。
MyEclipse中hibernate反向工程实例(一对多关联)
MyEclipse中hibernate反向工程实例(一对多关联)1、数据库设计实例对象为工作人员和部门,关系为一个部门对应多个工作人员,一个工作人员只属于一个部门见表语句如下:(先用Navicat建的表,然后导出的sql语句),数据库名称为test SET FOREIGN_KEY_CHECKS=0;DROP TABLE IF EXISTS`t_department`;CREATE TABLE`t_department`(`id`int(11)NOT NULL auto_increment,`departmentname`varchar(40)NOT NULL,`departmentlocation`varchar(100)NOT NULL,PRIMARY KEY(`id`))ENGINE=InnoDB DEFAULT CHARSET=utf8;DROP TABLE IF EXISTS`t_user`;CREATE TABLE`t_user`(`id`int(11)NOT NULL auto_increment,`username`varchar(20)NOT NULL,`password`varchar(20)NOT NULL,`departmentid`int(11)NOT NULL,PRIMARY KEY(`id`),KEY`departmentid`(`departmentid`),CONSTRAINT`departmentid`FOREIGN KEY(`departmentid`)REFERENCES `t_department`(`id`))ENGINE=InnoDB DEFAULT CHARSET=utf8;2、使用MyEclipse反向工程生成配置文件和POJO类第一步:配置数据源1、打开MyEclipse,新建一个web工程,这里命名为hibernate_demo2、打开数据库设置器:依次单击【window】-->【Show View】-->【Other…】如下图所示:3、在弹出的窗口ShowView中选择DB Browser,如下图所示:4、在DB Browser窗口中,选择显示的图标,单击右键执行新建命令,如下图示5、弹出Database Driver对话框,在此会要求我们配置数据库的相关信息,具体设置如下图所示,设置完成,单击Finish.【第二步】引入hibernate配置文件1、添加hibernate包:选中我们的Web工程,依次单击鼠标右键-->MyEclipse-->Add Hibernate Capabilities…如下图所示:2、在弹出的窗口中做如下设置:【Next】,创建hibernate的配置文件【Next】,指明hibernate与数据库的连接【Next】,创建HibernateSessionFactory类,用来获得session。
Hibernate实验(一):数据源、Hibernate配置与反向工程映射
Hibernate实验(一):数据源、Hibernate配置与反向工程映射实验目的:1、熟练掌握Eclipse中数据源的配置。
2、熟练掌握Hibernate配置、理解配置文件内容。
3、熟悉掌握反向工程的概念,并能完成反向工程的相关ORMapping操作。
4、初步了解应用Hibernate架构技术完成数据库应用项目开发。
实验内容:参考下列步骤将示例项目:TeacherSysDemo再做一遍。
一.建立数据库如果该数据库已存在,此步骤可省略。
注意:也可以使用提供的salary.bak在SQLServer中进行“还原数据库”操作在SQLServer中建立数据库teacherinfo。
表结构与样例数据参考如下:二、新建项目新建一个Dynamic Web Project项目Hibernatepro1,并将示例项目如:TeacherSysDemo中WebContent目录中WEB-INFO中lib下所有的.jar文件拷贝到此新建项目对应的文件夹中。
三、数据源配置在Eclipse菜单项中选择Window->Show View->Data Source Explorer使之配置成如下效果:参考配置过程与参考选项值设置:点击其中Test Connection按钮,应得到Ping Success即为数据源配置成功。
记录其中的Connection URL。
用于后续Hibernate配置。
三、在Eclipse中进行Hibernate数据库连接配置与Hibernate.xml文件配置1.打开Hibernate Configurations面板Hibernate插件安装完毕后,Windows->Show View->Hibernate->Hibernate Configurations点击OK后,出现Hibernate Configurations面板:2.进行hibernate配置在该面板中点击右键菜单中“Add Configuration”菜单项:3.hibernate.cfg.xml文件的生成要先有hibernate.cfg.xml文件,才能为后续反向工程映射文件的生成提供条件。
反向生成的问题
为hibernate添加Mapping时出现No entries available2011-05-27 11:06在hibernate中,每个数据表对应的其实是一个实体类,每个实体类有一个对应的hbm.xml 配置文件和你匹配,myeclipse中有个MyEclipse Database Explorer视图,它提供了myeclipse 与数据库直接连接的内置窗口,并且通过此窗口可以生成hibernate的mapping文件。
? 在原有的工程中我配置好了这些,并且可以对数据表进行浏览和数据修改了,但是在执行Generate Hibernate Mapping时,location项browser的时候,弹出窗口显示没有合适的No entries available,即没有办法选择工程文件包目录。
我原以为是项目的问题,但是我重建了项目还是加不了映射文件,在网上查找到如下解决办法:原来需要先为应用增加Hibernate特性。
操作如下:1.在项目上点击右键选择MyEclipse选项,为应用增加Hibernate特性.2. 在出现的配置窗口中,选中“Add Hibernate 2.1 libraries to project?”,然后设定存放Hibernate 库文件的目录为:/WEB-INF/lib 目录,默认会选择创建一个新的Hibernate配置文件hibernate.cfg.xml。
3.点击下一步,进入Hibernate数据库连接配置界面,在Connection Profile选项中直接选择在MyEclipse Database Explorer中配置的vipdata选项,然后就会自动生成其他的配置,可以选择“Copy JDBC Driver and add to classpath”,这样就会将JDBC驱动拷贝到WEB-INF/lib目录中。
:4.点击下一步,来创建Hibernate的SessionFactory类,这是一个简单的集中管理Hibernate会话的工厂类,填写类的全名称。
反向工程的常见问题及解决方法
反向工程的常见问题及解决方法反向工程是指将已经存在的产品或系统进行逆向分析、解析和重新设计的过程。
在实际应用中,反向工程经常遇到各种问题,本文将探讨一些常见问题,并提供相应的解决方法。
首先,一个常见的问题是技术难题。
反向工程往往要求分析已有产品的工作原理和设计细节,但这些信息往往不是公开的。
这可能导致技术专家难以获取所需的信息,进而影响反向工程的进行。
为了解决这个问题,一种方法是通过仔细观察和测试来获取尽可能多的信息。
技术专家可以使用不同的仪器和工具来研究产品的外观、材料和功能,以获取线索。
此外,与尽可能多的产品开发和制造专家进行互动,交流经验和知识,也可帮助技术专家克服技术难题。
其次,反向工程常常面临法律和道德问题。
特别是在未经授权的情况下对他人的知识产权进行分析和设计可能涉及侵权问题。
为了解决这个问题,技术专家在进行反向工程之前应该充分了解相关的法律法规,并遵守相关的规定。
另外,与专业律师进行咨询也是明智的选择,以确保反向工程过程的合法性和符合道德准则。
第三,反向工程可能面临技术困难。
有些产品或系统可能采用了复杂的设计和技术,这使得分析和逆向工程变得更加困难。
为了克服这个问题,技术专家需要不断学习和掌握先进的技术和工具。
例如,他们可以使用计算机辅助设计(CAD)软件来辅助分析和重新设计产品。
此外,他们还可以利用模拟软件和模拟器来验证和测试反向工程的结果,以确保其准确性和可行性。
第四,反向工程中可能遇到的另一个问题是时间和成本。
反向工程通常需要大量的时间和资源来完成,这对于企业和个人来说可能是一个挑战。
为了解决这个问题,技术专家可以采取一些策略来提高效率和降低成本。
例如,他们可以利用现代技术和工具来加快分析和设计的速度。
此外,与团队合作和分工也可以提高效率,减少时间和成本。
最后,反向工程可能面临的另一个常见问题是数据的缺乏或不完整性。
有时,所分析的产品或系统可能缺少相关的文档或数据,这给反向工程带来了困扰。
hibernate saveorupdate举例使用 -回复
hibernate saveorupdate举例使用-回复Hibernate是一个使用方便的Java持久化框架,它提供了多种持久化操作的方式,其中之一就是saveOrUpdate方法。
本文将从基本概念开始,逐步介绍saveOrUpdate方法的使用,帮助读者更好地理解和使用该方法。
一、基本概念1. Hibernate:Hibernate是一个开源的对象关系映射框架,它允许开发人员以面向对象的方式操作数据库。
2. 持久化:持久化是指将数据存储到数据库中,并能保证数据的一致性和持久性,即数据不会因为程序的退出或断电等情况而丢失。
3. saveOrUpdate方法:saveOrUpdate是Hibernate框架中的一个用于保存或更新实体对象的方法。
当实体对象的主键存在时,会执行更新操作;当主键不存在时,会执行保存操作。
二、saveOrUpdate方法的使用步骤使用saveOrUpdate方法保存或更新实体对象需要经过以下步骤:1. 配置Hibernate环境:首先,需要在项目中配置好Hibernate的相关环境,包括数据库连接信息、实体对象和数据库表的映射关系等。
2. 创建实体对象:接下来,根据项目需求,创建一个需要保存或更新的实体对象,例如一个User对象,可以包含用户名、密码等属性。
3. 获取Session对象:在Hibernate中,使用Session对象来管理对象的持久化操作,可以通过SessionFactory来获取一个Session对象。
4. 开启事务:在进行持久化操作之前,需要先开启一个事务,以保证持久化操作的一致性。
5. 调用saveOrUpdate方法:使用Session对象的saveOrUpdate方法,将之前创建的实体对象作为参数传入。
Hibernate会根据实体对象的主键来判断是执行保存操作还是更新操作。
6. 提交事务:在持久化操作完成之后,需要将事务提交,以保证数据的完整性和一致性。
Hibernate随课笔记-WPJ1110
Hibernate工程反转(从数据库到实体类)1.增加Hibernate支持2.自动生成hibernate.cfg.xml配置文件,该配置文件为主配置文件(核心)一般一个项目一个。
注意:存放位置不要改变(src目录下),名字也不要改变。
3.选中需要反转的表右键选择hibernate反转(Reverse):创建实体类到数据库表的映射关系4.id主键生成选择native(本地),有数据库决定5.反转完成后自动为我们生成一个映射文件(*.hbm.xml)和一个与之对应的实体类,主配置文件中为我们增加了刚才新生成映射文件的位置映射关系,实体类中每一个属性都与我们反转的数据源数据一一对应,一定要注意映射文件存放的位置(与与之对应实体类存放同一包下)a)*.hbm.xml映射文件解说:i.class节点中属性name:实体类的完整包名类名ii.table:实体类与之对应的在数据库中的表名iii.catalog:该表所属的数据库名iv.换句话说:某个数据库下的某张表与实体类相对应的一个关系(映射关系)v.class下的子节点id:只能有一个,表示的是主键,凡是column相关都是与数据库表字段相关,属性名与数据库字段相对应。
Generator表示的是id主键生成策略,Hibernate强烈建议一般使用native(本地,由数据库决定)6.数据持久化操作(一切开发围绕着数据展开)a)瞬时状态:程序数据存在内存中,程序退出,数据消失。
b)持久状态:程序数据保存在磁盘中,程序退出,数据任然存在。
c)持久化操作:将瞬时状态与持久状态进行转化的机制。
7.数据源:比如数据库、xml、文本文档所存储的数据可以作为数据源。
8.dao:Date access object,数据访问对象,我们写到现在的dao模式(接口)是持久化操作的一个实现,所操作的数据源不仅仅局限于关系型数据库。
我们可以根据不同的数据源编写不同的dao实现,比如说xml、properties等。
hibernate逆向工程
在实际的开发过程中,涉及的表太多了,一个一个的写java实体类很费事费时的。
Myeclipse 提供了一个简单的方法:Hibernate逆向工程。
在这里将详细介绍使用myeclipse逆向生成Hibernate工程。
1、准备工作首先你必须提供一个数据库,并且需要完整、正确处理他们之间的关系。
2、第一步Window-->open Perspective-->MyEclipse Database Exploere在这个视图的左边单击选择"New",会出现如下这个图:按照特定的数据库填写正确。
单击"NEXT"。
出现如下界面:最后"Finish"完成。
当然这里也可以不用进行这个步骤。
3、第二步新建一个Web工程项目。
选中该项目然后:MyEclipse-->Project--->add Hibernate Capabilities。
操作之后会出现如下界面:NextNextNext对于这步中,我选中去掉自动生成的HibernatesessionFactory工具类,该工具类就是一个回去Session的单例。
完成后,打开项目就可以看到:3、第三步:重新回到MyEclipse Database Exploere界面。
选中刚刚配置的SQLServerDriver,右击选中open connection,完成后就会出现如下界面:在dbo-->table中选中相应的表,右击选中Hibernate Reverse Engineering。
如上。
然后出现:NextNext最后:这样就完成了Hibernate的逆向工程了............。
使用反向工程数据库用户权限不够无法选择要反转的表
使用反向工程数据库用户权限不够无法选择要反转的表
使用反向工程时,如果数据库用户权限不够无法选择要反转的表:
这时候应该怎么办呢?
DBret需要在“system tables”上执行SQL语句,不是每个用户都可以这样做,这就是为什么需要更多权限的原因。
这是有意设计的,它需要从数据库服务器检索元数据,因此需要一个强大的用户。
反向工程只是一种帮助方式,帮助我们快速生成这些DataView和Transaction,不是说只能通过这种方式来实现数据库反转。
这种情况下可以有两种解决方法:
1. 需要反转的表不多的时候,可以手动创建DataView和Transaction,然后指定下对应的数据库和表结构中对应的字段名称;比如这个数据库中的这一张表
a.先在GeneXus中创建一个新的数据库,连接到需要反转的数据库
b. 创建Transaction
c. 创建Dataview,指定对应的Table和外部字段名称
d. 创建索引,指定数据库
e. 这样就可以把需要的数据库手动反转过来了,就可以正常使用了
2. 如果需要反转的表非常多,可以向数据库管理人员要一份只有表结构的SQL 语句,自己在本地执行下,创建一个同样结构的数据库,然后反转本地的数据库中的表,等发布的时候在这里改一下数据库配置信息即可。
Hibernate反向工程无法选择
在Myeclipse手动添加Hibernate支持作者:铃梦当当(QQ:123865071)开发工具:Myeclipse8.6,Hibernate3.3.2的JAR包。
开发设置:在Myeclipse中自己手动添加Hibernate所需的JRA包,以及Hibernate.cfg.xml文件开发问题:没有办法通过Hibernate反向工程生成POJO等一些操作问题描述:通过上述手动添加的Hibernate所需的JAR包我们可以运行Hibernate程序,可是当我们打开Hibernate.cfg.xml的时候会提示我们:This project is not a MyEclipse Hibernate Project,Assuming Hibernate 3 capabilites for the configuration editor,这个倒是无所谓,它不影响我们继续操作,但是我们利用DB Browser的Hibernate反向工程通过数据库表生成POJO等操作的时候会发现我们没有办法选择工程项目,弹出框一片空白,我们没有办法继续通过方向工程生成POJO等next的操作。
解决方法1:(1):在你的myeclipse工作空间找到你的工程项目,在工程项目下找到.project这个文件,通过记事本打开,在buildSpec节点下增加一个节点:<buildCommand><name>com.genuitec.eclipse.hibernate.HibernateBuilder</name><arguments></arguments></buildCommand>在natures节点下增加一个节点:<nature>com.genuitec.eclipse.hibernate.hibernatenature</nature>保存并关闭(2):在项目根目录下增加一个.myhibernatedata 文件,此文件和.project放在同一个目录下,.myhibernatedata里面的内容如下:#MyEclipse Hibernate Properties#Tue Dec 07 17:32:11 CST 2010genBasicCompId=falseprofile=daoSFId=version=3.3jndiPath=detectM2M=falsereStrategyClass=detectO2O=falsespringDaoFile=useJavaTypes=truekeyGenerator=libInstallFolder=<no jars/zips in selected libraries>addLibs2Project=truegenVersionTag=falsesessionFactoryId=basePersistenceClass=genAnnotations=falsereSettingsFile=#注意把下面的ResWebServices换成你项目的名称,并对应你hibernater.cfg.xml正确位置configFile=/ResWebServices/src/hibernate.cfg.xmlcreateConfigFile=trueaddLibs2Classpath=truebaseDaoClass=这个时候你会发现没有办法自己重新建立一个.myhibernatedata 这个文件,windows提示我们必须输入文件名,只是你可以在你的Myeclipse中新建一个测试工程,通过Myeclipse 添加Hibernate支持,把测试工程下的.myhibernatedata 这个文件拷贝过去,改一下对应的内容就可以了,也可以从别的项目中拷贝一个.myhibernatedata文件过来。
NHibernate常见问题及解决方法
NHibernate 常见问题及解决方法∙ hbm.xmlNHibernate文件中版本号可能引起的问题.<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">此处的2.2代表了NHibernate的版本号,必须与你安装的NHibernate的产品版本号相符.否则的话,举个例子,若为 urn:nhibernate-mapping-2.0,则会出现如下错误: Could not find schema information for the element'urn:nhibernate-mapping-2.0:hibernate-mapping'. 或是:"NHibernate.Cfg.Environment的类型初始值设定项引发异常".∙在对照类中如果属性没有加virtual关键字,可能报NHibernate.InvalidProxyTypeException: The following types may not be used as proxies:Model.FriendLink: method set_Description should be virtualModel.Type: method get_TypeName should be virtual.....这是一种解决方案是给属性加上virtual关键字,另一种解决方法是在映射文件中加入default-lazy="false".∙映射文件没有将属性设为"嵌入的资源"引起的错误.这个是我最常忽略的,如果忽略了它,可能会报比较多的错误,其中一个就是如下形式:NHibernate.QueryException: in expected: <end-of-text> (possibly an invalid or unmapped class name was used in the query) [From Post Order By IsSetUp Desc, DateTime Desc, Hot Desc]∙ "Could not find the dialect in the configuration"异常异常描述:NHibernate.MappingException: Could not compile the mapping document: Model.FriendLink.hbm.xml ---> System.InvalidOperationException: Could not find the dialect in the configuration在 NHibernate.Dialect.Dialect.GetDialect(IDictionary`2 props)在NHibernate.Cfg.Configuration.AddValidatedDocument(NamedXmlDocument doc)解决方法:配置文件中xmlns="urn:nhibernate-configuration-2.2" 千万不能忘记,确保没有忘掉xmlns="urn:nhibernate-configuration-2.2" 就可以解决这个bug.<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"><session-factory><propertyname="connection.provider">NHibernate.Connection.DriverConnectionProv ider</property><property name="use_outer_join">true</property><propertyname="connection.driver_class">NHibernate.Driver.SqlClientDriver</pro perty><property name="show_sql">true</property><propertyname="dialect">NHibernate.Dialect.MsSql2005Dialect</property><propertyname="connection.connection_string">Server=.\sqlexpress;initial catalog=SBlog;User Id=sa;Password=1;</property><mapping assembly="XMGL.Model"/></session-factory></hibernate-configuration>∙ "未能未能加载文件或程序集Castle.DynamicProxy2"的异常异常描述:System.TypeInitializationException:“NHibernate.Proxy.Poco.Castle.CastleProxyFactory”的类型初始值设定项引发异常。
hibernate常见错误
Hibernate常见错误1.错误:object references an unsaved transient instance - save the transient instance before flushing:com.xxxx.bean.java.Sysblog; nested exception is org.hibernate.TransientObjectException: object references an unsavedtransient instance - save the transient instance before flushing: com.xxx.bean.java.Sysblog解决方法:没有可预期的实例,当然就要实例化对象咯2.错误:Exceptionobject references an unsaved transient instance - save the transient instance before flushing:src.persistent.Product......解决方法:原因没有为某对象进行set设置,如上边的这个就是某对象没有调用setProduct 3.错误:Illegal attempt to associate a collection with two open sessions......解决方法:(hibernate的session提供了一级缓存,每个session,对同一个id进行两次load,不会发送两条sql给数据库,但是session关闭的时候,一级缓存就失效了。
sysblogarticle.setAmount(new Long(sysblogcommentService.selcom(sysblogarticle.getArticleid().toString()).size()));//通过文章id获取文章评论数sysblogarticle.setSysblogcomments(null);//关键sysblogarticleService.saveOrUpdate(sysblogarticle);//将文章中评论条数修改参考:[url=/blog/forum/17913][color=#0000ff]http://javaflasher.javaeye.co m/blog/forum/17913[/color][/url]4.错误:Hbm映射文件都生成好后,改数据库增加了默认值(如:将某个字段值设为1),结果在插入的时候,数据库那边没有反应。
hibernate 常见问题集锦
1问:Hibernate初始化时总是报错:ng.NoClassDefFoundError Hibernate初始化时出现出错代码:ng.NoClassDefFoundError: net/sf/ehcache/CacheException答:这是新手常见问题。
是因为使用默认设置时,Hibernate文档里指出的Hibernate库不完整,缺少ehcache.jar(用于支持Ehcache的相关文件)。
配置中加入以上文件,就可以避免初始化时出现ng.NoClassDefFoundError:net/sf/ehcache/CacheException异常。
2问:Hibernate报错:"Not binding factory to JNDI, no JNDI name configured" 运行下列程序:public static void main(String[] args) throws Exception {Configuration conf = new Configuration().addClass(Person.class); ......出现错误码:12:15:34,250 INFO SessionFactoryObjectFactory:82 - Not binding factory to JNDI, no JNDI name configuredng.UnsupportedOperationException: The user must supply a JDBC connectionaterSuppliedConnectionProvider.getConnec tion (UserSuppliedConnectionProvider.java:32)atnet.sf.Hibernate.impl.BatcherImpl.openConnection(BatcherImpl.java:28 9)at net.sf.Hibernate.impl.SessionImpl.connect(SessionImpl.java:3361) atnet.sf.Hibernate.impl.SessionImpl.connection(SessionImpl.java:3321) atnet.sf.Hibernate.impl.BatcherImpl.prepareQueryStatement(BatcherImpl. java:66)atnet.sf.Hibernate.loader.Loader.prepareQueryStatement(Loader.java:779 )atnet.sf.Hibernate.hql.QueryTranslator.iterate(QueryTranslator.java:86 4)at net.sf.Hibernate.impl.SessionImpl.iterate(SessionImpl.java:1618) at net.sf.Hibernate.impl.QueryImpl.iterate(QueryImpl.java:27)at com.Hibernate.person.TestQueryPerson.main(TestQueryPerson.java:28) Exception in thread "main"答:修改main函数,为该程序指定配置文件即可。
hibernate的antra冲突解决
ng.NoSuchMethodError: antlr.collections.AST.getLine()I最终解决方案(很多人不知道)
首先我用的是myeclipse 2014版本的,我用的是myeclipse 自己的包
ng.NoSuchMethodError: antlr.collections.AST.getLine()I
错误原因(和网上说的一样):Struts的 antlr-2.7.2.jar 与 hibernate 里面的
anltr-2.7.6.jar冲突
解决方案:第一步删除Struts2的 antlr-2.7.2.jar
首先把Struts2.1 Libraries移出(最好是先移除了)右击>build path>remove 然后选择window中的preference,接着如图操作
再然后再把Struts2.1 Libraries加进来就OK了,
不过,这样做还是会出错,
那接下来还得这么做
第二步(很多人忽略了这一步):D:\Tomcat \webapps\你自己的项目\WEB-INF\lib下的antlr-2.7.2.jar删除即可
=================
建议不使用MyEclipse自带的SSH框架,第一,jar之间有冲突。
第二,不适合初学者。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在Myeclipse手动添加Hibernate支持
作者:铃梦当当(QQ:123865071)
开发工具:
Myeclipse8.6,Hibernate3.3.2的JAR包。
开发设置:
在Myeclipse中自己手动添加Hibernate所需的JRA包,以及Hibernate.cfg.xml文件
开发问题:
没有办法通过Hibernate反向工程生成POJO等一些操作
问题描述:
通过上述手动添加的Hibernate所需的JAR包我们可以运行Hibernate程序,可是当我们打开Hibernate.cfg.xml的时候会提示我们:This project is not a MyEclipse Hibernate Project,Assuming Hibernate 3 capabilites for the configuration editor,
这个倒是无所谓,它不影响我们继续操作,但是我们利用DB Browser的Hibernate反向工程通过数据库表生成POJO等操作的时候会发现我们没有办法选择工程项目,弹出框一片空白,我们没有办法继续通过方向工程生成POJO等next的操作。
解决方法1:
(1):在你的myeclipse工作空间找到你的工程项目,在工程项目下找到.project这个文件,通过记事本打开,在buildSpec节点下增加一个节点:
<buildCommand>
<name>com.genuitec.eclipse.hibernate.HibernateBuilder</name>
<arguments>
</arguments>
</buildCommand>
在natures节点下增加一个节点:
<nature>com.genuitec.eclipse.hibernate.hibernatenature</nature>
保存并关闭
(2):在项目根目录下增加一个.myhibernatedata 文件,此文件和.project放在同一个目录下,.myhibernatedata里面的内容如下:
#MyEclipse Hibernate Properties
#Tue Dec 07 17:32:11 CST 2010
genBasicCompId=false
profile=
daoSFId=
version=3.3
jndiPath=
detectM2M=false
reStrategyClass=
detectO2O=false
springDaoFile=
useJavaTypes=true
keyGenerator=
libInstallFolder=<no jars/zips in selected libraries>
addLibs2Project=true
genVersionTag=false
sessionFactoryId=
basePersistenceClass=
genAnnotations=false
reSettingsFile=
#注意把下面的ResWebServices换成你项目的名称,并对应你hibernater.cfg.xml正确位置configFile=/ResWebServices/src/hibernate.cfg.xml
createConfigFile=true
addLibs2Classpath=true
baseDaoClass=
这个时候你会发现没有办法自己重新建立一个.myhibernatedata 这个文件,windows提示我们必须输入文件名,只是你可以在你的Myeclipse中新建一个测试工程,通过Myeclipse 添加Hibernate支持,把测试工程下的.myhibernatedata 这个文件拷贝过去,改一下对应的内容就可以了,也可以从别的项目中拷贝一个.myhibernatedata文件过来。
(注意
myhibernatedata前面有个点哦)
保存关闭。
(3)重新启动你的Myeclipse你会发现点击hibernate.cfg.xml的时候提示消失了,通过Hibernate反向工程也能选择下一步了。
解决方法2:
也就是方法一提到的,自己在新建一个测试工程,在工程中作用myeclipse添加Hibernate 支持,然后通过Hibernate反向工程把POJO添加等文件生成到测试工程中,然后再拷贝到正式项目中。
总结:至于为什么用自己手动添加Hibernate支持而不用Myeclipse添加Hibernate支持,仁者见仁智者见智吧。
我也是通过自己手动添加Hibernate支持的时候发现点击Hibernate.cfg.xml出现提示框,通过Hibernate反向工程的时候没有办法选择next,我通过自己新建了一个测试项目(测试项目可以通过方向工程)对比根目录下的这个两个配置文件进行对比发现问题所在,假如:Hibernate以后出新版本了而你的Myeclipse不支持新版本,我想你可以通过此方法来添加Hibernate支持的反向工程(个人猜想:没有试验过,注意在.myhibernatedata 文件中有个version=3.3,你要做相应的修改),触类旁通,我想手动添加Spring的时候也可以通过此方法来添加支持(我没有试验过)。