小编vec*_*ect的帖子

通过子查询缩小查询结果

我试图通过另一个查询的结果缩小Hibernate Criteria查询的结果集.我知道如何用JPQL解决这个问题:

FROM DocPackage p WHERE
  EXISTS (SELECT g
    FROM ObjectGroup g JOIN g.items i, Person per
    WHERE g=p.applicantGroup
      AND i.objectClass = 'org.cp.model.common.Person'
      AND i.objectId=per.id
      AND lower(concat(per.firstName,' ',per.lastName)) like :applicant
  )
Run Code Online (Sandbox Code Playgroud)

但我无法想象如何使用Criteria进行此类查询.有关如何使用Criteria实现此选择的任何想法?使用Hibernate 3.3.

UPD:试图解决这个问题我做了以下Criteria查询:

Criteria resultCriteriaQuery = this.hibernateSession.createCriteria(DocPackage.class, "pack");
        DetachedCriteria personSubquery = DetachedCriteria.forClass(Person.class, "pers").
            add(Restrictions.like("pers.loFstLstName", "%" + searchObject.getApplicant().toLowerCase() + "%")).
            add(Restrictions.eqProperty("itm.objectId", "pers.id"));
        DetachedCriteria applicantsSubquery = DetachedCriteria.forClass(ObjectGroup.class, "objGrp").
            add(Restrictions.eqProperty("pack.applcantGroup", "objGrp")).
            createAlias("objGrp.items", "itm").
            add(Restrictions.eq("itm.objectClass", "org.cp.model.common.Person")).
            add(Subqueries.exists(personSubquery));
        resultCriteriaQuery.add(Subqueries.exists(applicantsSubquery));
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我有一个NullPointerExceptionresultCriteriaQuery.list().这个查询出了什么问题?有任何想法吗?

java hibernate hibernate-criteria

6
推荐指数
1
解决办法
533
查看次数

将 JAXB 片段文件与 wsimport 结合使用

有两个 WSDL 共享一些用于定义数据类型的模式。以下是其中一个 WSDL 的示例:

<wsdl:definitions
    name="FooService"
    targetNamespace="http://xmlns.my.org/services/FooService/v001"
    xmlns:srv="http://xmlns.my.org/services/FooService/v001"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:fault="java:org.my.exception"
    ...
>
    <wsdl:types>
        <xsd:schema>
            <xsd:import namespace="java:org.my.exception" schemaLocation="../xsd/common/BusinessException.xsd"/>
            <xsd:import namespace="http://xmlns.my.org/services/FooServiceMessages/v001" schemaLocation="../xsd/fooservice/FooServiceMessages_v001.xsd"/>
        </xsd:schema>
    </wsdl:types>
    ...
    <wsdl:message name="BusinessException">
        <wsdl:part element="fault:BusinessException" name="BusinessException"/>
    </wsdl:message>
    ...
    <wsdl:portType name="IFooService">
        <wsdl:operation name="getItems">
            ...
            <wsdl:fault message="srv:BusinessException" name="BusinessException"/>
        </wsdl:operation>
        ...
    </wsdl:portType>
    ...
</wsdl:definitions>
Run Code Online (Sandbox Code Playgroud)

BusinessException.xsd是常见的方案之一。

我正在尝试通过这些 WSDL 生成 Java 代码wsimport。将公共模式与 WSDLd 分开编译,然后在编译 WSDL 时重用从这些模式派生的类是合理的。为此,我生成了一个 JAXB Episode 文件以及常见的 Java 代码:

<bindings version="2.1" xmlns="http://java.sun.com/xml/ns/jaxb">
  <bindings scd="x-schema::tns" xmlns:tns="java:org.my.exception">
    <schemaBindings map="false">
      <package name="org.my.integration.dto.common"/>
    </schemaBindings>
    <bindings scd="~tns:BusinessException">
      <class ref="org.my.integration.dto.common.BusinessException"/>
    </bindings> …
Run Code Online (Sandbox Code Playgroud)

xsd wsdl jax-ws jaxb wsimport

5
推荐指数
1
解决办法
2712
查看次数

如何从类路径中的不同jar中加载相同名称的资源之一?

假设有一个jar main.jar依赖于另外两个jar- dep1.jardep2.jar。这两个依赖项都在MANIFEST.MF的类路径中main.jar。每个依赖项jar都有一个目录foo,其中包含一个文件bar.txt

dep1.jar
|
\--foo/
   |
   \--bar.txt

dep2.jar
|
\--foo/
   |
   \--bar.txt
Run Code Online (Sandbox Code Playgroud)

以下是主要类别main.jar

public class App
{
    public static void main( String[] args ) {
        ApplicationContext ctx = new StaticApplicationContext();
        Resource barResource = ctx.getResource("classpath:foo/bar.txt");
    }
}
Run Code Online (Sandbox Code Playgroud)

bar.txt将加载两个文件中的哪个?有没有一种方法可以在资源URL中指定应从中加载文件的jar?

java spring jar embedded-resource

5
推荐指数
1
解决办法
1594
查看次数

如何将交换ID和始发路由ID传递给bean?

Exchangeinterface具有getExchangeId()返回交换ID的方法.有没有办法在从路由调用bean时将此值传递给bean的方法?

同样的问题是关于起源于交换的路线的ID.该值由接口getFromRouteId()方法返回Exchange.

我知道我可以Exchange完全将一个对象传递给bean.但在我的情况下,将bean绑定到Camel API是不可取的.

java apache-camel

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