Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JPA eclipselink全局批取?_Jpa_Eclipselink_Jpa 2.0 - Fatal编程技术网

JPA eclipselink全局批取?

JPA eclipselink全局批取?,jpa,eclipselink,jpa-2.0,Jpa,Eclipselink,Jpa 2.0,加入时,我每行有一个选择。解决方案是批量提取,但我不希望注释无处不在 为什么我需要这个?每行选择一个是可怕的。。。如何全局设置此项?干杯也许不是理想的解决方案,但您可以尝试使用JPA提示和Java泛型: 公共类型查询 createBatchQuery(字符串ql、类clazz、字符串类型、字符串大小、字符串关系){ 返回em.createQuery(jpql,clazz) .setHint(QueryHints.BATCH_类型,类型) .setHint(QueryHints.BATCH_大小

加入时,我每行有一个选择。解决方案是批量提取,但我不希望注释无处不在


为什么我需要这个?每行选择一个是可怕的。。。如何全局设置此项?干杯

也许不是理想的解决方案,但您可以尝试使用JPA提示和Java泛型:

公共类型查询
createBatchQuery(字符串ql、类clazz、字符串类型、字符串大小、字符串关系){
返回em.createQuery(jpql,clazz)
.setHint(QueryHints.BATCH_类型,类型)
.setHint(QueryHints.BATCH_大小,大小)
.setHint(QueryHints.BATCH,relation);
}
然后,可以全局使用上述查询,并根据您的需要使用具体的查询实现进行扩展,即

String jpql=“从c国选择c,其中c.name=:name”;//或@NamedQuery
TypedQuery q=createBatchQuery(jpql,Country.class,“JOIN”,“64”,“c.cities”);
q、 setParameter(“名称”、“澳大利亚”);
国家c=q.getSingleResult();
关于这一主题的文章:


语法并没有真正起到帮助作用,因为c.cities没有类型安全性,而且通用API会更加冗长。另外,如果您使用更高级别的api,那么em用于查询(我使用的是deltaspike数据),则不可能这样设置
c.cities
遵循JPQL约定,因此需要在
TypedQuery.setHint
方法和
@QueryHint
注释中指定为字符串。不幸的是,我不知道DeltaSpike,但您肯定可以使用
javax.persistence.EntityManager
进行此类查询。