我使用Hibernate有几年了,但对查询和条件的用法不太确定。
据我所知,Hibernate的强项之一是在一个地方控制字段名。如果我有以下代码:
List cats = sess.createCriteria(Cat.class)
.add( Restrictions.like("name", "Fritz%") )
.add( Restrictions.between("weight", minWeight, maxWeight) )
.list();
如果我在java对象中更改Cat的"name“怎么办?
即使使用重构替换(就像在Elipse中一样),它也不会检测到需要更改的元素!
如果是这样,您如何在Java中维护字段名?
发布于 2012-01-18 16:24:37
我相信在Hibernate特定的api中不支持类型安全查询。然而,JPA 2支持它。请阅读:Dynamic, typesafe queries in JPA 2.0
发布于 2013-06-20 12:37:16
我在过去遇到过同样的问题,实际上没有办法在java中有一个字段的类型化和抗重构(更改名称)引用,所以也不可能有一个允许这样做的查询构建器,但我试图构建一个查询构建器的实现,它使用一些变通方法来允许您编写类型安全和抗重构的查询,它的名称是ObjectQuery,你可以找到一些关于here的信息。
如果它解决了你的用例,请让我知道!
显然,JPA Typesafe不是标准的,所以如果你正在寻找一些标准的东西,JPA Typesafe会更好,但它没有同样的能力!
https://stackoverflow.com/questions/8913489
复制