Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/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
Java Liferay自定义查询强制转换问题_Java_Sql_Hibernate_Casting_Liferay - Fatal编程技术网

Java Liferay自定义查询强制转换问题

Java Liferay自定义查询强制转换问题,java,sql,hibernate,casting,liferay,Java,Sql,Hibernate,Casting,Liferay,我将Liferay service builder与一个自定义查询一起使用,该查询跨两个表使用内部联接 我还有一个空白服务,它定义了将返回的模型 AuditExportFinderImpl.java default.xml自定义查询: <custom-sql> <sql id="findExportAudits"> <![CDATA[ SELECT audititem.auditid, audi

我将Liferay service builder与一个自定义查询一起使用,该查询跨两个表使用内部联接

我还有一个空白服务,它定义了将返回的模型

AuditExportFinderImpl.java

default.xml自定义查询:

<custom-sql>
    <sql id="findExportAudits">
        <![CDATA[
        SELECT
        audititem.auditid,
        audititem.orgid,
        audititem.userid,
        audititem.username,
        audititem.firstname,
        audititem.lastname,
        audititem.createdate,
        audititem.auditaction,
        auditdetail.auditdetailkey,
        auditdetail.auditdetailvalue
        FROM audititem
        INNER JOIN auditdetail ON audititem.auditid = auditdetail.auditid
        WHERE audititem.auditid IN ([$AUDIT_IDS$])
 ]]>
    </sql>
</custom-sql>
这将正确地将结果集列表转换返回到AuditExport,但每个记录的关联数据AuditDetail表都是相同的,请参见以下内容:

当不使用强制转换时,服务返回正确的数据,请参见下面一些为隐私而屏蔽的数据:

它为什么要复制数据?如何正确转换结果集

如果需要,我可以提供更多信息,谢谢。

好的,所以我的问题在my service.xml中

在模型中,我在service.xml中定义了太多的内容,只将audit定义为主键,但我正在检索一个包含其中许多内容的数据集


为了解决这个问题,我在service.xml中定义了AudiId和AudiDetailKey的组合键,然后正确地强制转换数据集。

请注意,service.xml可以在服务接口中找到,是开发Liferay服务的关键组件。
<custom-sql>
    <sql id="findExportAudits">
        <![CDATA[
        SELECT
        audititem.auditid,
        audititem.orgid,
        audititem.userid,
        audititem.username,
        audititem.firstname,
        audititem.lastname,
        audititem.createdate,
        audititem.auditaction,
        auditdetail.auditdetailkey,
        auditdetail.auditdetailvalue
        FROM audititem
        INNER JOIN auditdetail ON audititem.auditid = auditdetail.auditid
        WHERE audititem.auditid IN ([$AUDIT_IDS$])
 ]]>
    </sql>
</custom-sql>