
Hibernate
微风扫山岗
a simple person
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
hibernate的lazy配置引起的问题
在每一个常见企业应用系统中,我们经常都会把登陆的用户对象User放到session中,而且我们经常都会在action中写一个便捷方法getCurrentUser()方法,有一些经验不足的使用者就会把user传递到service层的接口,有的甚至把该对象传递到DAO层在使用User对象的引用变量是就会抛出如下的错误,其实这就是跨session访问的一个典型错误。这里有两个解决方式:1.每次调用ser原创 2006-12-15 17:14:00 · 3845 阅读 · 0 评论 -
DetachedCriteria的createCriteria(String associationPath,String alias)方法有bug
public DetachedCriteria createCriteria(String associationPath,String alias)存在bug,第二个参数alias经常不起作用,主要在一些比较复杂的语句中,比如有投影、分组应用中可以用public DetachedCriteria createAlias(String associationPath,String alias)来创原创 2007-01-01 13:58:00 · 4856 阅读 · 0 评论 -
hibernate的一个异常错误分析
在开发中,经常会遇到修改数据模型的字段类型,或者添加字段,若是最后把该字段类型映射为boolean,就可能会出问题。准确的说,若是该字段是空(不是Y或N,或者别的可以映射为boolean合理值),并被映射为boolean的话,因为hibernate不知道怎么去映射该字段,然后hibernate就抛出下列异常(如下),注意异常描述,看着这个错误信息,很难和错误原因联系起来org.springfr原创 2007-01-01 13:38:00 · 2118 阅读 · 0 评论 -
hibernate不支持这样的继承映射
我zai需要这样一种继承实现首先是每个具体类一张表,然后再是一个继承体系一张表的比如: Basic1 / / Basic2 Sub1原创 2007-01-01 13:54:00 · 1173 阅读 · 0 评论 -
分析hibernate中table per class hierarchy映射方式的一个异常
hibernate中,对于table per class hierarchy(每个类一张表)的映射继承方式,可能会遇到的问题若是这样3个标T_A、T_B、T_C,T_A是主表,T_B与T_C是2个子表;这3个表分别对应3个类A、B、C若T_A表存在一条主键是001的记录,且同时在T_B、T_C两张表中都存在一条主键是001的记录(若通过标准的UI操作不会出现这样的记录,一般都是在开发过程中,手原创 2007-03-22 15:40:00 · 5327 阅读 · 0 评论 -
在weblogic中使用spring查找hibernate映射文件的陷阱
由于spring对hibernate配置文件hibernate.cfg.xml的集成相当好,所以,在项目中我一直使用spring的org.springframework.orm.hibernate.LocalSessionFactoryBean来取代hibernate.cfg.xml文件的功能LocalSessionFactoryBean有好几个属性用来查找hibernate映射文件:mappin原创 2007-04-18 16:00:00 · 3125 阅读 · 0 评论 -
hibernate的Criteria的一个bug
这个bug是在使用hibernate annotation过程中发现的,开始以为是hibenrate annotation的bug,后来又使用xml文件来配置,还是存在同样的问题。问题场景:我需要使用省份与城市,他们的关系是:一个省有个多城市,很简单的OneToMany关系,在改变province中的cities的lazy特性时,遇到问题由于我采用把所有的资源都是放在一个表中的策略,所有这里原创 2007-07-18 15:03:00 · 1862 阅读 · 0 评论 -
hibernate3的一个bug
只要在hql中出现call字符串,不论是以独立单词、还是以作为组合单词的一部分出现,hibernate都会抛出下列异常:org.hibernate.HibernateException: ordinal parameter mismatch at org.hibernate.engine.query.HQLQueryPlan.buildParameterMetadata(HQLQueryPlan.原创 2007-04-18 12:45:00 · 2584 阅读 · 0 评论 -
hibernate中重复显示问题的解决方法
下面是在hibernate中解决重复记录显示的一些思考1.criterion.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY)可以部分解决这个这问题,若结果需要分页显示这就无能为力了,因为这在内存中过滤重复的显示,分页显示结果总数就不准确了。2.criteria.setProjection(Projections.di原创 2007-04-23 11:53:00 · 4925 阅读 · 1 评论 -
hibernate annotation对jpa主键one-to-one映射关系支持的有问题
我们都知道在hibernate中有个foreign的生成主键的方式,这个功能主要是用在主键关联的one-to-one关系,并且我在用hbm文件中配过这种方式,在ejb3/jpa规范中也提供了一个相似功能的annotation的:PrimaryKeyJoinColumn。但是,我在用hibernate中使用这种方式的映射时,发现不起作用,也就是使被影射的对象不会自动获得ID,具体可以参看下面这个示例原创 2007-08-13 11:01:00 · 5309 阅读 · 5 评论 -
hibernate annotation中joined继承方式支持jpa规范不完整
可以先看一下hibernate官方网站上的一个帖子,看看Gavin Kinghttp://opensource.atlassian.com/projects/hibernate/browse/ANN-140?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_25541我觉得这确实是hiberna原创 2007-10-03 11:29:00 · 2026 阅读 · 0 评论 -
hibernate3.2.6终于修复一个bug
很早以前就在发现DetachedCriteria createCriteria(String associationPath, String alias) 方法的第二个参数alias不起作用,终于在最新的hibernate3.2.6中得到修复,其实这个bug早就有人提过(http://opensource.atlassian.com/projects/hibernate/browse/HHH-92原创 2008-02-15 13:02:00 · 2497 阅读 · 1 评论 -
使用JPA的@SecondaryTable来实现hibernate的混合使用“每个类分层结构一张表”和“每个子类一张表”的功能
@Entity@Table(name = "T_BASE")@Inheritance(strategy = InheritanceType.SINGLE_TABLE)@DiscriminatorColumn(name = "CATEGORY", discriminatorType = DiscriminatorType.STRING)public class BaseDomain ...原创 2008-03-17 10:20:00 · 4159 阅读 · 0 评论 -
使用spring的MBeanExporter暴露hibernate的StatisticsService对象方法
spring的配置文件 class="org.springframework.jmx.export.MBeanExporter" lazy-init="false"> value-ref="statisticsService" /> class="org.hibernate.原创 2007-12-31 13:02:00 · 2815 阅读 · 0 评论 -
使用hibernate的Criteria来动态改变对象关联方式
hibernat的Criteria提供了很多种方式来零时修改对象的关联方式,主要有如下3中:1.createAlias(String associationPath, String alias, int joinType)2.createCriteria(String associationPath, String alias, int joinType) 3.setFetchMode(Strin原创 2008-03-26 14:55:00 · 2769 阅读 · 0 评论 -
hibernate中给集合排序的方法
这里我们用set作示例,不讨论map,bag等结构有执行排序的位置,可以分为内存排序和数据库排序,1.内存排序,通过提供一个实现了Comparator接口的排序器来实现配置文件: class="com.company.project.domain.system.Menu" />java文件:/** * 用来给菜单排序 * * @autho原创 2006-11-14 23:18:00 · 4087 阅读 · 0 评论 -
hibernte中用criteria实现not in功能的方法
我一直喜欢criteria,而不喜欢用hql。Property类中提供的in方法有三个:public Criterion in(Collection values)public Criterion in(Object[] values)public Criterion in(DetachedCriteria subselect)但是,并没有提供相应的三个notin方法,只提供了一个:pub原创 2006-10-20 12:48:00 · 20229 阅读 · 3 评论 -
一个既有继承关系,又有component的映射文件的示例
ProducedWare映射表productioninfo,然后其中有一个叫ProductionInfo得组件原创 2006-06-02 17:29:00 · 1150 阅读 · 0 评论 -
hibernate复杂映射关系下的删除操作和list类型映射的注意点
映射文件:为了节省篇幅,映射文件中一些不重要的信息都被省略TClassMeta.hbm.xml "TClassMeta" table="T_CLASS_META"> "classMetaId" type="java.lang.Long" column="CLASS_META_ID"> "tfieldMetas"原创 2006-03-17 15:28:00 · 3861 阅读 · 0 评论 -
不适合O/R映射的持久化操作情况
对于需要操作大量只读数据的操作,最好使用jdbc动态数据也不适合使用O/R映射,因为O/R映射会高速缓存这些数据的,而这些数据的国期太快,这就增加系统的开销原创 2006-02-16 15:51:00 · 1179 阅读 · 0 评论 -
关于table per subclass继承映射的注意点
对于table per subclass继承映射的方式,由于在数据库级别没办法控制,经常会出现映射父表与子表的记录条数不一致的情况,具体来说,就是父表有某条记录,而子表没有.在这种情况下,继承关系就不匹配了,若进行update与delete操作,就会出现异常net.sf.hibernate.StaleObjectStateException: Row was updated or deleted原创 2006-03-27 18:44:00 · 1486 阅读 · 0 评论 -
一个复杂hibernate映射文件
"-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" > name="example.Element" table="T_ELEMENT" dynamic-update="true" dynami原创 2006-02-23 15:27:00 · 1300 阅读 · 0 评论 -
关于hibernate集合的排序问题
1.order-by:这个设置,在继承体系下有缺陷,具体见下列配置: not-null="false"/> inverse="true" lazy="true" batch-size="10" cascade="save-update" order-by="NAME asc"> 这原创 2006-03-30 19:44:00 · 1683 阅读 · 0 评论 -
关于级联删除的问题
今天遇到一个级联删除的问题,配置文件如下: name="example.Type" table="T_TYPE"> cascade="none" outer-join="false"> not-null="原创 2006-03-03 16:01:00 · 1498 阅读 · 0 评论 -
hibernate中Expression.eq(String propertyName, Object value)的使用注意点
最近在工作中尝试使用Criteria来代替hql的功能,为什么呢?因为觉得到处使用hql,尤其是比较复杂的查询,就有种使用jdbc的感觉.在使用Expression.eq(String propertyName, Object value)方法的时候,出现了一个java.lang.ClassCastException: java.lang.String异常,很郁闷,看不出来是什么地方出了问题?后来原创 2006-04-05 14:25:00 · 3596 阅读 · 0 评论 -
在eclipse中调试hibernate in action的示例应用程序caveatemptor
最近在eclipse中调试hibernate in action的示例应用程序caveatemptor,刚把程序导进来就发现ant的构建文件build.xml有一个警告(加了黄线的代码),如下:到网上搜了一下,没有这方面的直接资料,有的说是在ant runtime中添加junit.jar,就对了, 可是我加了也不对,出现的警告信息如下:后来找了一些资料,我最后发现解决这个问题是原创 2006-04-12 18:36:00 · 1665 阅读 · 0 评论 -
O/R Mapping与数据模型
说实话,我以前从没考虑这两者之间的关系,只是最近工作当中屡次遇到对这两者误用导致的问题,促使我思考这些问题,我遇到的问题有:1.DBA在建立数据模型时,为了在编码时方便,频繁地在一些进行数据冗余(在项目中,我就遇到过到处冗余过一个字段TypeId),而做这些的目的仅仅是为了编码时的方便(不用关联就可以取得一些字段值)与性能(若O/M,可以利用cache来提高性能),若没有使用O/M时,这种冗余还是原创 2006-04-19 17:57:00 · 1340 阅读 · 0 评论 -
hibernate的映射文件编写技巧一则
在正式的项目中我们经常采用工具从数据库生成领域模型,以及hbm映射文件,然后再修改文件。我见过一些开发人员为了验证自己修改的映射文件是否正确,就每修改一次就运行一条insert语句,这种方式不但消耗很多时间,而且要编写很多代码,而且有表之间关联的时候,更麻烦。其实只要稍微变通一下,就可以了,把执行insert语句变为select语句,这样就会执行很快,而且select语句默认是查找全部字段的,原创 2006-09-08 16:34:00 · 1511 阅读 · 1 评论 -
hibernate的unique配置
在hibernate的配置文件中,有的元素有unique属性的配置,但是我经常看到这个元素被滥用,尤其是一些自动生成hbm文件的工具,经常会自动生成该配置,而且一般开发人员也不理解hibernate配置的真正含义。unique的真正意义是:在生成DDL语句时,才会用到,换句话说,若我们已经有了数据库(这是很常见的),不需要从hbm文件中生成DDL语句的话,就不需要配置这个属性。原创 2006-09-19 23:14:00 · 5653 阅读 · 0 评论 -
hibernate中抛出的一个奇怪错误
4.今天遇到一个很让人郁闷的问题:一直运行良好的程序抛出了一个匪夷所思的异常,异常堆栈内容如下:org.springframework.beans.factory.BeanCreationException: Error creating bean with name customerDAO defined in ServletContext resource [/WEB-INF/spring原创 2006-09-22 12:46:00 · 2103 阅读 · 0 评论 -
discriminator属性type的设置
Table per class hierarchy实体继承映射方式只有把discriminator的type为string才是对的,数据库类型是tinyint,设置type=short(或者别的hibernate类型),总是抛出org.hibernate.MappingException: Could not format discriminator value to SQL string参考书上原创 2006-06-01 16:11:00 · 2110 阅读 · 0 评论 -
关于hibernate映射继承关系时独立的子类配置文件的问题
对于hibernate中映射继承关系时,一般都是把子类的映射文件放在父类的映射文件中,但是也若映射关系复杂且庞大的话,可能会导致父类的映射文件很复杂,所以hibernate支持把子类的映射文件放在一个独立的映射文件中,只是多类一个parent属性而已但是在hibernate2中这个映射文件的配置顺序必须放在父类配置文件的后面。但是在hibernate3中,没有了这种限制(这个信息实在hiberna原创 2006-06-02 13:47:00 · 2589 阅读 · 0 评论 -
关于hibernate与spring的结合使用中的配置文件
因为spring已经把hibernate的cfg配置文件完全封装了,所以在spring与hibernate结合使用的项目中可以放弃使用hibernate.cfg.xml文件,因为这样可以减少配置文件的数量的,而且可以减少由配置文件带来的痛苦更重要的是spring的配置方式在hibernate的基础上进行了增强,具体可以看org.springframework.orm.hibernate3.Loca原创 2006-06-02 16:08:00 · 1417 阅读 · 0 评论 -
spring与hibernate集成--关于配置文件的最优化使用
spring对hibernate整合的相当完美,并且spring对hibernate配置文件hibernate.cfg.xml也做了整合,在spring中利用LocalSessionFactoryBean就可以把hibernate.cfg.xml文件的内容整合到spring的配置文件中,这确实相当好,减少了配置文件。其实,LocalSessionFactoryBean最吸引我的原因是mappi原创 2007-04-26 15:47:00 · 7241 阅读 · 2 评论