我有一个实体,其(字符串)字段的大小为10
@Column(length = 10)
String code;
但是,字段的值长度可以为5或10。我想根据其长度创建一个与该字段的值匹配的hibernate条件,例如:
final List<String> codesLong= new ArrayList<String>();
final List<String> codesShort= new ArrayList<String>();
...
criteria.add(Restrictions.or(
Restrictions.and(Restrictions.in("code", codesShort),
Restrictions.eq("code.length", 5)),
Restrictions.and(Restrictions.in("code", codesLong),
Restrictions.eq("code.length", 10)))
);
但是…上面看起来不错,但是显然不起作用。我不知道该如何处理。我将不胜感激。
谢谢
//解决方案(感谢Stanislav!)实体:
@Column(length = 10)
String code;
@Formula(" length(code) ")
int codelength; // create GETter method as well
条件:
final List<String> codesLong= new ArrayList<String>();
final List<String> codesShort= new ArrayList<String>();
...
criteria.add(Restrictions.or(
Restrictions.and(Restrictions.in("code", codesShort),
Restrictions.eq("codelength", 5)),
Restrictions.and(Restrictions.in("code", codesLong),
Restrictions.eq("codelength", 10)))
);
您可以引入人工的Entity字段codeLength并使用@Formula注释(此处为示例)
并在条件中使用codeLength。
问题内容: 嗨,我想使用条件编写查询:必须使用条件创建以下查询: “从S2中选择不同的(s2Taxper),其中s2Tc =‘601’并且s2Txcd!=” 提前致谢 问题答案:
问题内容: 我面临的问题是Hibernate的一个简单问题,但无法解决(无法访问的Hibernate论坛当然无济于事)。 我有一个简单的课程想继续学习,但是请继续学习: 持久化类的相关代码为: 实际的运行代码很简单: 我在注解中尝试了一些“策略”,但似乎不起作用。初始化也无济于事!(例如)。 谁能给我一些启示? 编辑2: 确认:不能解决问题 求助: 重新创建数据库解决了问题 问题答案: 有时,即使
问题内容: 假设我有这个课: 现在在我的课堂上,我试图找出先前的值实例与将要保存(更新)到数据库的新值。我使用preupdate metdhod来做到这一点: 因此,假设我有一个名称和姓氏的对象实例: 这不是由侦听器接听的,这是可以的,因为我仅侦听更新。现在,如果我要像这样更新此实例: 因此,这会触发mylistener中的方法以及当我尝试执行以下操作时: 当我调试时,我已经获得了新近更新的实例,
问题内容: 我正在尝试通过加入实体类来创建BO 我得到100个空BO,即所有属性均为null我的BO如下 ..... 当我删除aliasToBean行并遍历Object []时,我可以看到已获取正确的值,请指导我… 问题答案: 尝试显式地对项目进行别名化,以匹配Bean中的字段名称,如下所示:
问题内容: 我在JPA中更新对象时遇到问题 我有豆子用户 和 当尝试更新时给我异常:当表评级包含行时,无法通过反射获得字段值 错误TransactionInterceptor:434-应用程序异常被提交异常com.vodafone.visradio.dataaccess.exception.DataAccessException覆盖:org.hibernate.PropertyAccessExce
问题内容: 我试图找出是否可以使用Hibernate Criteria API进行以下HQL: 其中InitialCount是一个非常简单的,具有字符串和长构造函数的bean: 可能吗? 问题答案: 试试这个 : 其中,公式属性是映射到公式“ substring(name,1,1)”的人员的属性