我想将所有具有文本标记的对象加载到数据库中的任意一个小但任意数量的值中.在SQL中进行此操作的逻辑方法是构建"IN"子句.JPQL允许使用IN,但似乎需要我直接将每个参数指定给IN(例如,"in(:in1,:in2,:in3)").
有没有办法指定一个数组,或者应该展开到IN子句值的列表(或其他一些容器)?
如何使用namedquery计数,而不是获取所有列表(它会提高我认为的性能).这是不起作用的命名查询:
@NamedQuery(name = "Charakteristika.findAllCount", query = "SELECT COUNT(c) FROM Charakteristika c")
Run Code Online (Sandbox Code Playgroud)
执行此:
System.out.println("a");
System.out.println(em.createNamedQuery("Charakteristika.findAllCount", Integer.class).getSingleResult().intValue());
System.out.println("b");
Run Code Online (Sandbox Code Playgroud)
输出:
a
Run Code Online (Sandbox Code Playgroud)
虽然此查询有效:
@NamedQuery(name = "Charakteristika.findAll", query = "SELECT c FROM Charakteristika c")
Run Code Online (Sandbox Code Playgroud)
执行此:
System.out.println("a");
System.out.println(em.createNamedQuery("Charakteristika.findAll", Charakteristika.class).getResultList().size());
System.out.println("b");
Run Code Online (Sandbox Code Playgroud)
输出:
a
11111
b
Run Code Online (Sandbox Code Playgroud) 是否可以在命名查询的where子句中使用like?我正在努力做以下事情,但我得到例外
@NamedQuery(name = "Place.getPlaceForCityAndCountryName",
query = "SELECT p FROM Place p WHERE " +
"lower(p.city) like :city and " +
"lower(p.countryName) like :countryName");
Run Code Online (Sandbox Code Playgroud)
我尝试添加%,就像在普通SQL中那样,但是会编译异常.
任何指针非常感谢!
谢谢
Criteria API和NamedQuery之间的决策是否有启发式/最佳实践/规则集?
到目前为止我的想法:
命名查询通常更具可读性.条件查询更灵活.
两者都是预编译的.我倾向于尽可能长时间地使用命名查询,然后改为标准.
但也许通过使用标准API来"灵活"查询的冲动可能暗示了次优设计(即关注点的分离)?
谢谢
我在实体类Voter中编写了一个命名查询
NamedQuery(name = "Voter.findvoter", query = "SELECT count(*) FROM Voter v WHERE v.voterID = :voterID" and where v.password= : password),
Run Code Online (Sandbox Code Playgroud)
我想调用这个命名查询,我还需要设置voterID和密码.
你能帮助我吗.谢谢
我正在尝试将我的命名查询放在我的orm.xml中(使用persistence.xml放入META-INF)但是我的orm.xml似乎被hibernate/jpa忽略了.
当我尝试使用em.createNamedQuery("myQuery")创建我的命名查询时,它返回它无法找到此查询.
我使用注释,我想在orm.xml中外化我的命名查询(仅限于此).
这是我的persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
<persistence-unit name="default" transaction-type="RESOURCE_LOCAL">
<mapping-file>META-INF/orm.xml</mapping-file>
<class>com.mysite.Account</class>
<properties>
<property name="hibernate.cache.provider_class" value="net.sf.ehcache.hibernate.EhCacheProvider" />
<property name="hibernate.cache.use_query_cache" value="true" />
<property name="hibernate.cache.use_second_level_cache" value="true" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="use_sql_comments" value="false" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MYSQLDialect" />
<property name="hibernate.c3p0.min_size" value="5" />
<property name="hibernate.c3p0.max_size" value="20" />
<property name="hibernate.c3p0.timeout" value="300" />
<property name="hibernate.c3p0.max_statements" value="50" />
<property name="hibernate.c3p0.idle_test_period" value="3000" />
<property name="hibernate.search.default.directory_provider" value="org.hibernate.search.store.FSDirectoryProvider" />
</properties>
</persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud)
这是我的orm.xml
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm" …Run Code Online (Sandbox Code Playgroud) 我Spring JPA named querys在我的存储库中使用.我的问题是,我无法找到任何信息,对于不匹配任何结果的查询,返回的值是什么.我认为它将为空,findOne()但我不知道它的findAllByName()功能是什么.
有谁知道他/她的经验或知道在文档中的位置?
我们想要使用aws的javascript sdk在Athena中执行参数化查询.
似乎Athena的命名查询可能是这样做的,但是文档似乎非常神秘,无法理解如何去做.
如果有人可以帮我们做以下事情,那就太好了
SELECT c FROM Country c WHERE c.name = :name name参数的值我已经成功地javax.persistence.NamedQuery与JPA2结合使用.命名查询在实体类文件的顶部定义,并使用无状态EJB(实体外观).
现在我必须将实体类文件提取到一个单独的Jar文件中(因此我们可以从Google Web Toolkit项目中使用它们).显然我仍然包含jar,但现在facade bean不再找到查询了:
java.lang.IllegalArgumentException: NamedQuery of name: Store.findByExternalId not found.
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.getDatabaseQueryInternal(EJBQueryImpl.java:576)
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createNamedQuery(EntityManagerImpl.java:1004)
at com.sun.enterprise.container.common.impl.EntityManagerWrapper.createNamedQuery(EntityManagerWrapper.java:533)
at com.skalio.bonusapp.server.StoreFacade.getByExternalId(StoreFacade.java:43)
...
Run Code Online (Sandbox Code Playgroud)
这里有什么问题?我可以不在外部Jar中定义NamedQueries吗?
我刚刚找到了这个链接,建议将NamedQueries放在XML文件中,而不是作为实体文件中的注释.这可能是解决我的问题的一个想法,但不回答我的问题......;)
named-query ×10
jpa ×7
java ×6
orm ×3
hibernate ×2
sql ×2
criteria-api ×1
ejb ×1
hql ×1
jpql ×1
spring-boot ×1