[ 
https://issues.apache.org/jira/browse/OLINGO-1312?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Patrick Haller updated OLINGO-1312:
-----------------------------------
    Description: 
h2. Summary

In presence of NCLOB columns, Olingo JPA Processor generates an unsupported 
SELECT DISTINCT ... SQL when reading child entity sets connected to a parent 
entity with

{{GET [http://myservice/api/odata/Childs]}}
h2. Details

We have entities defined like

{{public class Parent}}
{
 {{    @Id}}
 {{    private String uuid;}}

 

{{    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, 
orphanRemoval = true, mappedBy = "parent")}}
    private List<Child> children = new ArrayList<>();
 {{}}}

and

{{public class Child}}
 \{{{}}
 \{{     @Id}}
 {{    private String uuid;}}{{@ManyToOne}}

{{    @JoinColumn(name = "parent_uuid", nullable = false)}}
 \{{     private Parent parent;}}

 

{{    @Column(length = 255, nullable = false)}}
 \{{     @Size(max = 255)}}
 \{{     private String title;}}

 

{{    @Column(length = -1)}}
 \{{     @Lob}}
 \{{     private String description;}}
 {{}}}

 

The *Child.description* column is defined as a @Lob (NCLOB in SAP HANA).

OlingoJPAProcessor generates

{{SELECT DISTINCT t1.uuid AS a1, t1.description AS a2, t1.title AS a3, 
t1.parent_uuid AS a4}}
 {{  FROM parent t0,}}
 {{       child t1}}
 {{  WHERE t0.uuid = t1.parent_uuid))}}
 {{  ORDER BY t1.uuid LIMIT ? OFFSET ?}}

from this.

Eventually, this leads to 

*com.sap.db.jdbc.exceptions.JDBCDriverException: SAP DBTech JDBC: [264]: 
invalid datatype: LOB type in distinct select clause:*
 *SQL State: HY000, Error Code: 264*

{{at 
com.sap.db.jdbc.exceptions.SQLExceptionSapDB._newInstance(SQLExceptionSapDB.java:191)}}
 \{{ at 
com.sap.db.jdbc.exceptions.SQLExceptionSapDB.newInstance(SQLExceptionSapDB.java:42)}}
 \{{ at 
com.sap.db.jdbc.packet.HReplyPacket._buildExceptionChain(HReplyPacket.java:976)}}
 \{{ at 
com.sap.db.jdbc.packet.HReplyPacket.getSQLExceptionChain(HReplyPacket.java:157)}}
 \{{ at 
com.sap.db.jdbc.packet.HPartInfo.getSQLExceptionChain(HPartInfo.java:39)}}
 \{{ at com.sap.db.jdbc.ConnectionSapDB._receive(ConnectionSapDB.java:3437)}}
 \{{ at com.sap.db.jdbc.ConnectionSapDB.exchange(ConnectionSapDB.java:1575)}}
 \{{ at 
com.sap.db.jdbc.PreparedStatementSapDB._prepare(PreparedStatementSapDB.java:2816)}}
 {{...}}
 \{{ at 
org.eclipse.persistence.internal.jpa.QueryImpl.executeReadQuery(QueryImpl.java:260)}}
 \{{ at 
org.eclipse.persistence.internal.jpa.QueryImpl.getResultList(QueryImpl.java:480)}}
 \{{ at 
org.apache.olingo.odata2.jpa.processor.core.access.data.JPAPage$JPAPageBuilder.buildFromQuery(JPAPage.java:117)}}
 \{{ at 
org.apache.olingo.odata2.jpa.processor.core.access.data.JPAPage$JPAPageBuilder.build(JPAPage.java:95)}}
 \{{ at 
org.apache.olingo.odata2.jpa.processor.core.access.data.JPAProcessorImpl.handlePaging(JPAProcessorImpl.java:443)}}
 \{{ at 
org.apache.olingo.odata2.jpa.processor.core.access.data.JPAProcessorImpl.process(JPAProcessorImpl.java:165)}}
 {{...}}

 

  was:
h2. Summary

In presence of NCLOB columns, Olingo JPA Processor generates an unsupported 
SELECT DISTINCT ... SQL when reading child entity sets connected to a parent 
entity with

{{GET http://myservice/api/odata/Childs}}
h2. Details

We have entities defined like

{{public class Parent}}
{{{}}
{{    @Id}}
{{    private String uuid;}}

 

{{    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, 
orphanRemoval = true, mappedBy = "parent")}}
{{     private List<Child> children = new ArrayList<>();}}
{{}}}

and

{{public class Child}}
{{{}}
{{     @Id}}
{{    private String uuid;}}{{@ManyToOne}}

{{    @JoinColumn(name = "parent_uuid", nullable = false)}}
{{     private Parent parent;}}

 

{{    @Column(length = 255, nullable = false)}}
{{     @Size(max = 255)}}
{{     private String title;}}

 

{{    @Column(length = -1)}}
{{     @Lob}}
{{     private String description;}}
{{}}}

 

The *Child.description* column is defined as a @Lob (NCLOB in SAP HANA).

OlingoJPAProcessor generates

{{SELECT DISTINCT t1.uuid AS a1, t1.description AS a2, t1.title AS a3, 
t1.parent_uuid AS a4}}
{{  FROM parent t0,}}
{{       child t1}}
{{  WHERE t0.uuid = t1.parent_uuid))}}
{{  ORDER BY t1.uuid LIMIT ? OFFSET ?}}

from this.

Eventually, this leads to 

 *com.sap.db.jdbc.exceptions.JDBCDriverException: SAP DBTech JDBC: [264]: 
invalid datatype: LOB type in distinct select clause:*
 *SQL State: HY000, Error Code: 264*

{{at 
com.sap.db.jdbc.exceptions.SQLExceptionSapDB._newInstance(SQLExceptionSapDB.java:191)}}
{{ at 
com.sap.db.jdbc.exceptions.SQLExceptionSapDB.newInstance(SQLExceptionSapDB.java:42)}}
{{ at 
com.sap.db.jdbc.packet.HReplyPacket._buildExceptionChain(HReplyPacket.java:976)}}
{{ at 
com.sap.db.jdbc.packet.HReplyPacket.getSQLExceptionChain(HReplyPacket.java:157)}}
{{ at com.sap.db.jdbc.packet.HPartInfo.getSQLExceptionChain(HPartInfo.java:39)}}
{{ at com.sap.db.jdbc.ConnectionSapDB._receive(ConnectionSapDB.java:3437)}}
{{ at com.sap.db.jdbc.ConnectionSapDB.exchange(ConnectionSapDB.java:1575)}}
{{ at 
com.sap.db.jdbc.PreparedStatementSapDB._prepare(PreparedStatementSapDB.java:2816)}}
{{...}}
{{ at 
org.eclipse.persistence.internal.jpa.QueryImpl.executeReadQuery(QueryImpl.java:260)}}
{{ at 
org.eclipse.persistence.internal.jpa.QueryImpl.getResultList(QueryImpl.java:480)}}
{{ at 
org.apache.olingo.odata2.jpa.processor.core.access.data.JPAPage$JPAPageBuilder.buildFromQuery(JPAPage.java:117)}}
{{ at 
org.apache.olingo.odata2.jpa.processor.core.access.data.JPAPage$JPAPageBuilder.build(JPAPage.java:95)}}
{{ at 
org.apache.olingo.odata2.jpa.processor.core.access.data.JPAProcessorImpl.handlePaging(JPAProcessorImpl.java:443)}}
{{ at 
org.apache.olingo.odata2.jpa.processor.core.access.data.JPAProcessorImpl.process(JPAProcessorImpl.java:165)}}
{{...}}

 


> Olingo 2.0.x JPA generating unexecutable SQL for HANA in presence of NCLOB 
> columns
> ----------------------------------------------------------------------------------
>
>                 Key: OLINGO-1312
>                 URL: https://issues.apache.org/jira/browse/OLINGO-1312
>             Project: Olingo
>          Issue Type: Bug
>          Components: odata2-jpa
>    Affects Versions: V2 2.0.10
>            Reporter: Patrick Haller
>            Priority: Major
>
> h2. Summary
> In presence of NCLOB columns, Olingo JPA Processor generates an unsupported 
> SELECT DISTINCT ... SQL when reading child entity sets connected to a parent 
> entity with
> {{GET [http://myservice/api/odata/Childs]}}
> h2. Details
> We have entities defined like
> {{public class Parent}}
> {
>  {{    @Id}}
>  {{    private String uuid;}}
>  
> {{    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, 
> orphanRemoval = true, mappedBy = "parent")}}
>     private List<Child> children = new ArrayList<>();
>  {{}}}
> and
> {{public class Child}}
>  \{{{}}
>  \{{     @Id}}
>  {{    private String uuid;}}{{@ManyToOne}}
> {{    @JoinColumn(name = "parent_uuid", nullable = false)}}
>  \{{     private Parent parent;}}
>  
> {{    @Column(length = 255, nullable = false)}}
>  \{{     @Size(max = 255)}}
>  \{{     private String title;}}
>  
> {{    @Column(length = -1)}}
>  \{{     @Lob}}
>  \{{     private String description;}}
>  {{}}}
>  
> The *Child.description* column is defined as a @Lob (NCLOB in SAP HANA).
> OlingoJPAProcessor generates
> {{SELECT DISTINCT t1.uuid AS a1, t1.description AS a2, t1.title AS a3, 
> t1.parent_uuid AS a4}}
>  {{  FROM parent t0,}}
>  {{       child t1}}
>  {{  WHERE t0.uuid = t1.parent_uuid))}}
>  {{  ORDER BY t1.uuid LIMIT ? OFFSET ?}}
> from this.
> Eventually, this leads to 
> *com.sap.db.jdbc.exceptions.JDBCDriverException: SAP DBTech JDBC: [264]: 
> invalid datatype: LOB type in distinct select clause:*
>  *SQL State: HY000, Error Code: 264*
> {{at 
> com.sap.db.jdbc.exceptions.SQLExceptionSapDB._newInstance(SQLExceptionSapDB.java:191)}}
>  \{{ at 
> com.sap.db.jdbc.exceptions.SQLExceptionSapDB.newInstance(SQLExceptionSapDB.java:42)}}
>  \{{ at 
> com.sap.db.jdbc.packet.HReplyPacket._buildExceptionChain(HReplyPacket.java:976)}}
>  \{{ at 
> com.sap.db.jdbc.packet.HReplyPacket.getSQLExceptionChain(HReplyPacket.java:157)}}
>  \{{ at 
> com.sap.db.jdbc.packet.HPartInfo.getSQLExceptionChain(HPartInfo.java:39)}}
>  \{{ at com.sap.db.jdbc.ConnectionSapDB._receive(ConnectionSapDB.java:3437)}}
>  \{{ at com.sap.db.jdbc.ConnectionSapDB.exchange(ConnectionSapDB.java:1575)}}
>  \{{ at 
> com.sap.db.jdbc.PreparedStatementSapDB._prepare(PreparedStatementSapDB.java:2816)}}
>  {{...}}
>  \{{ at 
> org.eclipse.persistence.internal.jpa.QueryImpl.executeReadQuery(QueryImpl.java:260)}}
>  \{{ at 
> org.eclipse.persistence.internal.jpa.QueryImpl.getResultList(QueryImpl.java:480)}}
>  \{{ at 
> org.apache.olingo.odata2.jpa.processor.core.access.data.JPAPage$JPAPageBuilder.buildFromQuery(JPAPage.java:117)}}
>  \{{ at 
> org.apache.olingo.odata2.jpa.processor.core.access.data.JPAPage$JPAPageBuilder.build(JPAPage.java:95)}}
>  \{{ at 
> org.apache.olingo.odata2.jpa.processor.core.access.data.JPAProcessorImpl.handlePaging(JPAProcessorImpl.java:443)}}
>  \{{ at 
> org.apache.olingo.odata2.jpa.processor.core.access.data.JPAProcessorImpl.process(JPAProcessorImpl.java:165)}}
>  {{...}}
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to