- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个类(从实际代码中简化而来):
@Entity
KeyVal{
@Id private int id;
@ElementCollection private Collection<String> keys;
@ElementCollection private Collection<String> values;
}
我希望能够提取所有持有特定 key 的 KeyVals。类似于:
List<KeyVal> getByKey(String key) {
return getSession().createCriteria(KeyVal.class)
.add(Restriction.eq("keys",key)).list();
}
但是该代码产生:
org.hibernate.exception.GenericJDBCException: could not execute query
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:140)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:128)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.loader.Loader.doList(Loader.java:2545)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276)
at org.hibernate.loader.Loader.list(Loader.java:2271)
at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:119)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1716)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:347)
at lucky.HibernateLuckyDB.getAllSearchesContaining(HibernateLuckyDB.java:53)
at lucky.HibernateLuckyDBTest.testGetAllSearchesContainingMulty(HibernateLuckyDBTest.java:58)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: org.h2.jdbc.JdbcSQLException: Parameter "#1" is not set; SQL statement:
select this_.id as id12_0_ from WorldConSearch this_ where this_.id=? [90012-140]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
at org.h2.message.DbException.get(DbException.java:167)
at org.h2.message.DbException.get(DbException.java:144)
at org.h2.expression.Parameter.checkSet(Parameter.java:73)
at org.h2.command.Prepared.checkParameters(Prepared.java:153)
at org.h2.command.CommandContainer.query(CommandContainer.java:79)
at org.h2.command.Command.executeQuery(Command.java:132)
at org.h2.jdbc.JdbcPreparedStatement.executeQuery(JdbcPreparedStatement.java:96)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:76)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1953)
at org.hibernate.loader.Loader.doQuery(Loader.java:802)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
at org.hibernate.loader.Loader.doList(Loader.java:2542)
... 31 more
奇怪的是,对于复杂类型来说这似乎很容易(来自 Hibernate 文档):
List cats = sess.createCriteria(Cat.class)
.add( Restrictions.like("name", "F%") )
.createCriteria("kittens")
.add( Restrictions.like("name", "F%") )
.list();
最佳答案
你能试试 createAlias 吗?
List<KeyVal> getByKey(String key)
{
return getSession().createCriteria(KeyVal.class)
.createAlias("keys", "key")
.add(Restriction.eq("key",key))
.list();
}
关于java - 在 @CollectionElement hibernate 中使用 createCriteria,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9012796/
我在不同的示例、教程、博客等中看到过这两种格式,但就我的生活而言,我找不到对差异的解释。有什么区别 ICriteria crit = session.CreateCriteria(typeof(Cat
我在不同的示例、教程、博客等中看到过这两种格式,但就我的生活而言,我找不到对差异的解释。有什么区别 ICriteria crit = session.CreateCriteria(typeof(Cat
我正在尝试创建一个REST服务,该服务以JSON格式返回结果。 我创建了一个将返回搜索结果的方法。它接受一个EnumMap搜索参数,并检查这些参数以建立createCriteria。 我遇到的问题是,
我怎样才能在 grails 中使用 createCriteria 获得类似这个 MYSQL 查询的内容? SELECT * FROM engine4_user_fields_val
刚刚了解createCriteria()方法的功能。只是想知道,除了将其应用于Controller之外,还有没有一种方法可以应用于域类?可能是自己映射到类似这样的属性: static mapping
我想获取在其列表(firstsList或SecondsList)中包含特定用户的实例。 在我的解决方案中,创建条件仅考虑第一批用户。 逻辑OR的用法似乎不正确 域 class ClassA {
我正在尝试使用 criteria 从数据库中获取数据 Domain class发票 - class Invoice{ Date invoiceNo Date invoiceDate
几个小时以来,我试图弄清楚如何使用一种必须在列表中的条件来创建条件。 如果减少代码,则有以下两个域类: 酒店-我要检索的基本域类: class Hotel { static hasMany =
能够使用分页是目标,但是我不确定如何使用它。该关系是单向的hasMany(如下所示)。目前,它可以在没有分页的情况下正常工作(请参阅Screenshot),但是要使用分页,我必须更改 Controll
我很好奇如何使用条件构建器访问继承的类的字段。 假设我们有以下类(class): class A { String fieldOne String fieldTwo static hasM
我是Grails条件构建器的新手,有人可以解释以下含义吗? def c = Account.createCriteria() def results = c {
我可以做到这一点: def criteria = Category.createCriteria(); def results = criteria.list{
def employee = Person.createCriteria().listDistinct { eq "personType" UserType.EMPLOYEE or {
我想写一个单元测试(通过 JUnit)来测试这个函数在 Groovy 中的值: String getPeopleNamesById(int[] peopleIds) { Lis
在 SQL 中我可以写 SELECT blah FROM Clients Where @p1 Like '%'+lastname+'%' 如何在 Nhibernate 中使用 CreateCriter
我在createCriteria中的查询中有一堆行,但是必须进行一些更改,我需要在一行中隐藏带有0的行,在另一列中隐藏带有字母A的行,但是如果它们有,我就不会隐藏它们0和另一个字母,如何在create
通过使用CreateCriteria,我想比较两个列表,并检查groups中users中是否存在至少一个元素。 有像eq这样的东西吗? 域 class User { String login
我有一个域类反馈 class Feedback{ String name String email Date createdOn Boolean isMailSent
场景是这样的: 每个Process具有多个ProcessingSteps 我编写的代码能够获取所有进程,而无需与ProcessingSteps对应。 我知道我缺少where子句,我想问一下我们如何在G
我在grails中有一个域类,该类具有一列字符串类型。下面是域类结构。 class TravelRequestUpdates{ updatedAt sqlType:'varchar(4
我是一名优秀的程序员,十分优秀!