标签: named-query

JPQL IN子句:Java-Arrays(或Lists,Sets ...)?

我想将所有具有文本标记的对象加载到数据库中的任意一个小但任意数量的值中.在SQL中进行此操作的逻辑方法是构建"IN"子句.JPQL允许使用IN,但似乎需要我直接将每个参数指定给IN(例如,"in(:in1,:in2,:in3)").

有没有办法指定一个数组,或者应该展开到IN子句值的列表(或其他一些容器)?

sql orm jpa named-query jpql

101
推荐指数
1
解决办法
14万
查看次数

Hibernate中带有命名查询的可选参数?

在使用Hibernate时,有没有办法在命名查询中指定可选参数(例如,何时从表单提供搜索参数而不是所有参数都需要)?我正在使用本机SQL查询,但问题可能也适用于命名的HQL查询.

我很确定答案是'不',但我还没有在文档中找到明确的答案.

java orm hibernate hql named-query

30
推荐指数
4
解决办法
6万
查看次数

JPA计数NamedQuery

如何使用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)

java jpa named-query

28
推荐指数
2
解决办法
6万
查看次数

在where子句中使用like命名查询

是否可以在命名查询的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中那样,但是会编译异常.

任何指针非常感谢!

谢谢

java sql jpa named-query

27
推荐指数
3
解决办法
4万
查看次数

JPA命名查询与标准API?

Criteria APINamedQuery之间的决策是否有启发式/最佳实践/规则集?

到目前为止我的想法:
命名查询通常更具可读性.条件查询更灵活.
两者都是预编译的.我倾向于尽可能长时间地使用命名查询,然后改为标准.

但也许通过使用标准API来"灵活"查询的冲动可能暗示了次优设计(即关注点的分离)?

谢谢

java jpa named-query criteria-api

26
推荐指数
2
解决办法
2万
查看次数

如何调用命名查询

我在实体类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和密码.

你能帮助我吗.谢谢

jpa named-query

20
推荐指数
1
解决办法
4万
查看次数

使用jpa和hibernate在orm.xml中定义命名查询

我正在尝试将我的命名查询放在我的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)

java orm hibernate jpa named-query

19
推荐指数
2
解决办法
5万
查看次数

找不到匹配项时返回JPA查询的值

Spring JPA named querys在我的存储库中使用.我的问题是,我无法找到任何信息,对于不匹配任何结果的查询,返回的值是什么.我认为它将为空,findOne()但我不知道它的findAllByName()功能是什么.

有谁知道他/她的经验或知道在文档中的位置?

java named-query spring-data-jpa spring-boot

14
推荐指数
1
解决办法
2万
查看次数

在Athena中执行命名查询

我们想要使用awsjavascript sdk在Athena中执行参数化查询.

似乎Athena的命名查询可能是这样做的,但是文档似乎非常神秘,无法理解如何去做.

如果有人可以帮我们做以下事情,那就太好了

  • 在athena中避免sql注入的推荐方法是什么?
  • 创建一个参数化查询,如 SELECT c FROM Country c WHERE c.name = :name
  • 传递name参数的值
  • 执行此查询

sql-injection named-query amazon-web-services amazon-athena

13
推荐指数
1
解决办法
1739
查看次数

外部化实体后,NamedQuery:IllegalArgumentException(未找到查询)

我已经成功地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文件中,而不是作为实体文件中的注释.这可能是解决我的问题的一个想法,但不回答我的问题......;)

ejb jpa named-query

12
推荐指数
1
解决办法
2万
查看次数