我想使用JPA Criteria从数据库获取第一行.我使用JPA,Hibernate 4.2.7.在SQL中,语句如下所示:
SELECT * FROM houses WHERE rownum = 1;
Run Code Online (Sandbox Code Playgroud)
我的Java代码看起来像:
CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaQuery<House> query = builder.createQuery(House.class);
Root<House> root = query.from(House.class);
query.select(root).where(builder.equal(root.get("rownum"), 1));
TypedQuery<House> tQuery = entityManager.createQuery(query);
House house = tQuery.getSingleResult();
Run Code Online (Sandbox Code Playgroud)
但'rownum'伪列无法解决,我得到例外:
java.lang.IllegalArgumentException: Unable to resolve attribute [rownum] against path
at org.hibernate.ejb.criteria.path.AbstractPathImpl.unknownAttribute(AbstractPathImpl.java:120)
at org.hibernate.ejb.criteria.path.AbstractPathImpl.locateAttribute(AbstractPathImpl.java:229)
at org.hibernate.ejb.criteria.path.AbstractPathImpl.get(AbstractPathImpl.java:200)
Run Code Online (Sandbox Code Playgroud)
是可能的,如果是的话,如何使用Criteria API获得'rownum'伪列?谢谢你的任何建议.
我在尝试复制两个数组时遇到了一些麻烦.考虑以下简单代码:
ArrayList<Integer> t1 = new ArrayList<Integer>();
Integer i1 = new Integer(1);
Integer i2 = new Integer(2);
t1.add(i1);
t1.add(i2);
ArrayList<Integer> t2 = new ArrayList<Integer>();
System.arraycopy(t1, 0, t2, 0, t1.size());
Run Code Online (Sandbox Code Playgroud)
控制台显示:java.lang.ArrayStoreException:null.这段代码可能有什么问题,或者我怎么能以不同的方式做到这一点.抱歉可能是一个简单的问题,但我已经坚持了几个小时,无法解决它.
我有一点问题,我无法弄清楚为什么这段代码不起作用:
std::for_each(users.begin(), users.end(), [](Wt::WString u)
{
std::cout << "ilosc: " << users.size() << std::endl;
userBox_->addItem(u);
});
Run Code Online (Sandbox Code Playgroud)
编译时得到的错误:
GameWidget.cpp: In lambda function:
GameWidget.cpp:352:30: error: 'users' is not captured
GameWidget.cpp:353:4: error: 'this' was not captured for this lambda function
GameWidget.cpp: In member function 'virtual void GameWidget::updateUsers()':
GameWidget.cpp:354:3: warning: lambda expressions only available with -std=c++11 or -std=gnu++11 [enabled by default]
GameWidget.cpp:354:4: error: no matching function for call to 'for_each(std::set<Wt::WString>::iterator, std::set<Wt::WString>::iterator, GameWidget::updateUsers()::<lambda(Wt::WString)>)'
GameWidget.cpp:354:4: note: candidate is:
In file included from /usr/include/c++/4.7/algorithm:63:0,
from GameWidget.h:11,
from …
Run Code Online (Sandbox Code Playgroud)