草庐IT

hibernate3

全部标签

java - Hibernate Oracle 表空间注解

我正在注释我的DAO并使用hibernate3:hbm2ddl生成ddls。有没有办法注释表空间? 最佳答案 不,没有办法开箱即用。我过去使用以下-相当复杂-方法解决了这个问题:创建您自己的注释,@TableSpec,它具有表空间和其他必要的属性。扩展org.hibernate.cfg.Configuration并覆盖getTableMappings()以返回修饰的Table对象(见下文)。扩展org.hibernate.mapping.Table并覆盖sqlCreateString()和/或sqlAlterStrings()以附加

java - Hibernate 如何在@OneToMany 映射中找到集合的泛型类型?

给定一个简单的实体关系:@EntitypublicclassSingle{@OneToManypublicSetmultiples;}Hibernate如何发现倍数的泛型类型是Multiple?使用标准反射API无法找到此信息。我正在查看源代码,但真的不知道从哪里开始。 最佳答案 但是可以使用反射API找出答案。看看Field.getGenericType():Typetype=field.getGenericType();if(typeinstanceofParameterizedType){Type[]genericArgume

java - hibernate 查询 : positioned parameter and named parameter

HibernateQuery中有两种类型的查询参数绑定(bind)。一种是定位参数,另一种是命名参数。我可以在一个查询中使用这两个参数吗? 最佳答案 当然可以,只要您确保所有位置参数都在任何命名参数之前。这是一个例子:Queryq=session.createQuery("selectufromUseruwhereu.location=?andu.idin(:user_ids)");q.setParameter(0,location);q.setParameterList("user_ids",userIds);returnq.li

java - Hibernate 中 FlushMode.AUTO 和 FlushMode.ALWAYS 的区别?

已经通过FlushMode的hibernateapi规范,但没有得到确切的区别。所以请帮忙。 最佳答案 如果在触发任何查询之前刷新模式为“AUTO”,则hibernate将检查是否有任何表要更新。如果是这样,将进行冲洗,否则不会。如果刷新模式是“ALWAYS”,即使没有要更新的表也会进行刷新。检查来源,org.hibernate.event.def.DefaultAutoFlushEventListener.onAutoFlush(AutoFlushEvent) 关于java-Hiber

java - hibernate restrictions.in with and,怎么用?

我有如下表格id,employee_no,survey_no,name1test1test_name2test21test_name23test31test_name34test42test_name4如何通过将下面的AND组合成一个IN语句来使用Restriction.in进行查询?IN[(if(survey_no==1)&&employee_no=='test'),(if(survey_no==1)&&employee_no=='test2'),...] 最佳答案 我认为这是您要使用的条件组合(顺便说一句。帮助Hibernate

java - 未使用 Hibernate 标准投影别名

HibernateProjection别名是否有效?我可以发誓它只是没有。至少,它没有按照我的预期去做。这是Java:returnsessionFactory.getCurrentSession().createCriteria(PersonProgramActivity.class).setProjection(Projections.projectionList().add(Projections.alias(Projections.sum("numberOfPoints"),"number_of_points")).add(Projections.groupProperty("p

java - hibernate 二级 ehcache 未命中

我正在尝试使用ehcache实现使二级hibernate缓存工作。我确定这是我犯的一些明显的菜鸟错误,但我看不出它是什么!为了测试我的缓存,我正在执行以下操作:创建一个对象并保存它。我在事务中“获取”了一次,在那里我可以看到我在没有数据库命中的情况下取回了对象,这只是hibernate一级缓存在做它的事情。然后我提交事务并开始一个新session。这一次,当我“获取”对象时,我可以在调试中看到来自ehcache的缓存未命中。自从我在之前的事务中保存了该对象后,我就希望该对象现在在缓存中?这是我的代码:Sessionsession=getSession();session.beginTr

java - 控制 Hibernate EnumType.STRING 属性的排序顺序

目前,我的项目使用@Enumerated(EnumType.ORDINAL),所以当我按此列排序时,它是根据枚举中的顺序排序的,这工作正常。但我需要向enum添加一些额外的值,这些值需要插入到枚举值列表的不同位置,不能只添加到底部以保持正确的排序顺序。如果我这样做,我的数据库就会乱七八糟。我将不得不编写一些脚本来将所有这些序数值转换为正确的新序数。有可能以后必须添加更多状态。由于我必须修复数据库中的所有数据,因此我希望只需执行一次,因为这将是一项艰巨的任务。所以我正在考虑切换到EnumType.STRING,这样就不必再次重新映射数据库中的序数值。但是如果我这样做,那么我该如何正确排序

java - 如何克服 Hibernate Criteria 和 Example API 的限制?

我所在的公司拥有高度可配置的数据库搜索服务,以编程方式配置查询非常有用。CriteriaAPI非常强大,但是当我们的一位开发人员重构其中一个数据对象时,在我们运行单元测试之前,或者更糟的是,在我们的生产环境中运行时,标准限制不会发出它们被破坏的信号。最近,由于这个问题,我们有一个重构项目的工作时间意外地翻了一番,这是项目计划中的一个差距,如果我们知道真正需要多长时间,我们可能会采取替代方法。我想使用ExampleAPI来解决这个问题。如果我们在真实的POJO属性上指定“where”条件,Java编译器会大声指出我们的查询很无聊。但是,ExampleAPI中只有这么多功能,并且在很多方面

java - Hibernate 多对一外键默认值 0

我有一个表,其中父对象具有可选的多对一关系。问题是该表设置为默认fkey列为0。选择时,使用fetch="join"等——fkey上的默认值0用于反复尝试从另一个表中选择ID0。当然这不存在,但是我如何告诉Hibernate将值0视为与NULL相同——在获取不存在的关系时不循环20多次? 最佳答案 有两种方法可以做到这一点,一种在性能方面会变得丑陋,另一种是痛苦和尴尬的。潜在丑陋的方式是在ToOne端完成的。使用HibernateAnnotations它将是:@EntitypublicclassFoo{...@ManyToOne@J