[
https://issues.apache.org/jira/browse/OPENJPA-2656?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Namrata Jaiswal updated OPENJPA-2656:
-------------------------------------
Description:
When an embedded table as shown below has been used inside an entity, entity
fails to load for big entries as openjpa uses IN clause to join tables.
@ElementCollection( fetch = FetchType.EAGER )
@CollectionTable( name = "PULL_STORAGE_BLOB_IDS", joinColumns = @JoinColumn(
name = "TRANSACTION_ID" ) )
@Column( name = "STORAGE_BLOB_ID" )
private Set<String> storageIds;
And suppose there are around 10K entries for such entity, then it fails with
the below exception. It looks like openjpa joins collection table using IN
clause which fails when there is huge entries.
[8/9/16 11:34:08:701 EDT] 00000123 openjpa.Runtime
I Starting OpenJPA 2.2.3-SNAPSHOT
[8/9/16 11:34:08:701 EDT] 00000123 openjpa.jdbc.JDBC
I Using dictionary class
"com.ibm.ws.persistence.jdbc.sql.SQLServerDictionary" (Microsoft SQL Server
11.00.6020 ,Microsoft JDBC Driver 4.0 for SQL Server 4.0.2206.100).
[8/9/16 11:34:08:888 EDT] 00000123 com.ibm.b2b.cache.preload.PreloadService
I BCXCH0107I: Loaded 1 records into map SecurityPolicy
[8/9/16 11:34:21:587 EDT] 00000123
com.ibm.ws.objectgrid.ClientDomainContextImpl I CWOBJ1127I: The
ObjectGrid client connection 11 disconnected from the Domain_1.0.0 domain.
ObjectGrids used by this connection were [IdentityGrid, MegBase, MegComms,
PreloadGrid].
[8/9/16 11:34:21:587 EDT] 00000123 SystemErr
R Exception in thread "Thread-86"
[8/9/16 11:34:21:587 EDT] 00000123 SystemErr
R <openjpa-2.2.3-SNAPSHOT-r422266:1677238 fatal general error>
org.apache.openjpa.persistence.PersistenceException: The incoming request has
too many parameters. The server supports a maximum of 2100 parameters. Reduce
the number of parameters and resend the request. {prepstmnt -1461118340
SELECT t0.TRANSACTION_ID, t1.STORAGE_BLOB_ID
FROM PULL_DESTINATION_RUNTIME_DATA t0 INNER JOIN PULL_STORAGE_BLOB_IDS
t1 ON t0.TRANSACTION_ID = t1.TRANSACTION_ID
WHERE t0.TRANSACTION_ID IN (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ....................................
[8/9/16 11:34:21:634 EDT] 00000123 SystemErr
R at
org.apache.openjpa.jdbc.sql.DBDictionary.narrow(DBDictionary.java:4991)
[8/9/16 11:34:21:680 EDT] 00000123 SystemErr
R at
org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:4951)
[8/9/16 11:34:21:680 EDT] 00000123 SystemErr
R at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:136)
[8/9/16 11:34:21:680 EDT] 00000123 SystemErr
R at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:118)
[8/9/16 11:34:21:680 EDT] 00000123 SystemErr
R at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:70)
[8/9/16 11:34:21:680 EDT] 00000123 SystemErr
R at
org.apache.openjpa.jdbc.kernel.SelectResultObjectProvider.handleCheckedException(SelectResultObjectProvider.java:155)
[8/9/16 11:34:21:680 EDT] 00000123 SystemErr
R at
org.apache.openjpa.lib.rop.WindowResultList.getInternal(WindowResultList.java:150)
[8/9/16 11:34:21:680 EDT] 00000123 SystemErr
R at
org.apache.openjpa.lib.rop.AbstractNonSequentialResultList.get(AbstractNonSequentialResultList.java:73)
[8/9/16 11:34:21:680 EDT] 00000123 SystemErr
R at
org.apache.openjpa.kernel.DelegatingResultList.get(DelegatingResultList.java:259)
[8/9/16 11:34:21:680 EDT] 00000123 SystemErr
R at
com.ibm.b2b.cache.preload.MapPreloader.load(MapPreloader.java:277)
[8/9/16 11:34:21:680 EDT] 00000123 SystemErr
R at
com.ibm.b2b.cache.preload.PreloadService$PreloadThread.run(PreloadService.java:180)
[8/9/16 11:34:21:680 EDT] 00000123 SystemErr
R at java.lang.Thread.run(Thread.java:798)
[8/9/16 11:34:21:680 EDT] 00000123 SystemErr
R Caused by:
[8/9/16 11:34:21:696 EDT] 00000123 SystemErr
R org.apache.openjpa.lib.jdbc.ReportingSQLException: The
incoming request has too many parameters. The server supports a maximum of 2100
parameters. Reduce the number of parameters and resend the request. {prepstmnt
-1461118340
SELECT t0.TRANSACTION_ID, t1.STORAGE_BLOB_ID
FROM PULL_DESTINATION_RUNTIME_DATA t0 INNER JOIN PULL_STORAGE_BLOB_IDS
t1 ON t0.TRANSACTION_ID = t1.TRANSACTION_ID
WHERE t0.TRANSACTION_ID IN (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
was:
When an embedded table as shown below has been used inside an entity
@ElementCollection( fetch = FetchType.EAGER )
@CollectionTable( name = "PULL_STORAGE_BLOB_IDS", joinColumns = @JoinColumn(
name = "TRANSACTION_ID" ) )
@Column( name = "STORAGE_BLOB_ID" )
private Set<String> storageIds;
And suppose there are around 10K entries for such entity, then it fails with
the below exception. It looks like openjpa joins collection table using IN
clause which fails when there is huge entries.
[8/9/16 11:34:08:701 EDT] 00000123 openjpa.Runtime
I Starting OpenJPA 2.2.3-SNAPSHOT
[8/9/16 11:34:08:701 EDT] 00000123 openjpa.jdbc.JDBC
I Using dictionary class
"com.ibm.ws.persistence.jdbc.sql.SQLServerDictionary" (Microsoft SQL Server
11.00.6020 ,Microsoft JDBC Driver 4.0 for SQL Server 4.0.2206.100).
[8/9/16 11:34:08:888 EDT] 00000123 com.ibm.b2b.cache.preload.PreloadService
I BCXCH0107I: Loaded 1 records into map SecurityPolicy
[8/9/16 11:34:21:587 EDT] 00000123
com.ibm.ws.objectgrid.ClientDomainContextImpl I CWOBJ1127I: The
ObjectGrid client connection 11 disconnected from the Domain_1.0.0 domain.
ObjectGrids used by this connection were [IdentityGrid, MegBase, MegComms,
PreloadGrid].
[8/9/16 11:34:21:587 EDT] 00000123 SystemErr
R Exception in thread "Thread-86"
[8/9/16 11:34:21:587 EDT] 00000123 SystemErr
R <openjpa-2.2.3-SNAPSHOT-r422266:1677238 fatal general error>
org.apache.openjpa.persistence.PersistenceException: The incoming request has
too many parameters. The server supports a maximum of 2100 parameters. Reduce
the number of parameters and resend the request. {prepstmnt -1461118340
SELECT t0.TRANSACTION_ID, t1.STORAGE_BLOB_ID
FROM PULL_DESTINATION_RUNTIME_DATA t0 INNER JOIN PULL_STORAGE_BLOB_IDS
t1 ON t0.TRANSACTION_ID = t1.TRANSACTION_ID
WHERE t0.TRANSACTION_ID IN (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ....................................
[8/9/16 11:34:21:634 EDT] 00000123 SystemErr
R at
org.apache.openjpa.jdbc.sql.DBDictionary.narrow(DBDictionary.java:4991)
[8/9/16 11:34:21:680 EDT] 00000123 SystemErr
R at
org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:4951)
[8/9/16 11:34:21:680 EDT] 00000123 SystemErr
R at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:136)
[8/9/16 11:34:21:680 EDT] 00000123 SystemErr
R at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:118)
[8/9/16 11:34:21:680 EDT] 00000123 SystemErr
R at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:70)
[8/9/16 11:34:21:680 EDT] 00000123 SystemErr
R at
org.apache.openjpa.jdbc.kernel.SelectResultObjectProvider.handleCheckedException(SelectResultObjectProvider.java:155)
[8/9/16 11:34:21:680 EDT] 00000123 SystemErr
R at
org.apache.openjpa.lib.rop.WindowResultList.getInternal(WindowResultList.java:150)
[8/9/16 11:34:21:680 EDT] 00000123 SystemErr
R at
org.apache.openjpa.lib.rop.AbstractNonSequentialResultList.get(AbstractNonSequentialResultList.java:73)
[8/9/16 11:34:21:680 EDT] 00000123 SystemErr
R at
org.apache.openjpa.kernel.DelegatingResultList.get(DelegatingResultList.java:259)
[8/9/16 11:34:21:680 EDT] 00000123 SystemErr
R at
com.ibm.b2b.cache.preload.MapPreloader.load(MapPreloader.java:277)
[8/9/16 11:34:21:680 EDT] 00000123 SystemErr
R at
com.ibm.b2b.cache.preload.PreloadService$PreloadThread.run(PreloadService.java:180)
[8/9/16 11:34:21:680 EDT] 00000123 SystemErr
R at java.lang.Thread.run(Thread.java:798)
[8/9/16 11:34:21:680 EDT] 00000123 SystemErr
R Caused by:
[8/9/16 11:34:21:696 EDT] 00000123 SystemErr
R org.apache.openjpa.lib.jdbc.ReportingSQLException: The
incoming request has too many parameters. The server supports a maximum of 2100
parameters. Reduce the number of parameters and resend the request. {prepstmnt
-1461118340
SELECT t0.TRANSACTION_ID, t1.STORAGE_BLOB_ID
FROM PULL_DESTINATION_RUNTIME_DATA t0 INNER JOIN PULL_STORAGE_BLOB_IDS
t1 ON t0.TRANSACTION_ID = t1.TRANSACTION_ID
WHERE t0.TRANSACTION_ID IN (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
> When an embedded table is used and there is huge collection of data, open jpa
> APs fails to load data as it uses IN clause while joining tables
> ----------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: OPENJPA-2656
> URL: https://issues.apache.org/jira/browse/OPENJPA-2656
> Project: OpenJPA
> Issue Type: Bug
> Affects Versions: 2.2.0
> Environment: all
> Reporter: Namrata Jaiswal
> Priority: Blocker
>
> When an embedded table as shown below has been used inside an entity, entity
> fails to load for big entries as openjpa uses IN clause to join tables.
> @ElementCollection( fetch = FetchType.EAGER )
> @CollectionTable( name = "PULL_STORAGE_BLOB_IDS", joinColumns = @JoinColumn(
> name = "TRANSACTION_ID" ) )
> @Column( name = "STORAGE_BLOB_ID" )
> private Set<String> storageIds;
> And suppose there are around 10K entries for such entity, then it fails with
> the below exception. It looks like openjpa joins collection table using IN
> clause which fails when there is huge entries.
> [8/9/16 11:34:08:701 EDT] 00000123 openjpa.Runtime
> I Starting OpenJPA 2.2.3-SNAPSHOT
> [8/9/16 11:34:08:701 EDT] 00000123 openjpa.jdbc.JDBC
> I Using dictionary class
> "com.ibm.ws.persistence.jdbc.sql.SQLServerDictionary" (Microsoft SQL Server
> 11.00.6020 ,Microsoft JDBC Driver 4.0 for SQL Server 4.0.2206.100).
> [8/9/16 11:34:08:888 EDT] 00000123 com.ibm.b2b.cache.preload.PreloadService
> I BCXCH0107I: Loaded 1 records into map SecurityPolicy
> [8/9/16 11:34:21:587 EDT] 00000123
> com.ibm.ws.objectgrid.ClientDomainContextImpl I CWOBJ1127I:
> The ObjectGrid client connection 11 disconnected from the Domain_1.0.0
> domain. ObjectGrids used by this connection were [IdentityGrid, MegBase,
> MegComms, PreloadGrid].
> [8/9/16 11:34:21:587 EDT] 00000123 SystemErr
> R Exception in thread "Thread-86"
> [8/9/16 11:34:21:587 EDT] 00000123 SystemErr
> R <openjpa-2.2.3-SNAPSHOT-r422266:1677238 fatal general
> error> org.apache.openjpa.persistence.PersistenceException: The incoming
> request has too many parameters. The server supports a maximum of 2100
> parameters. Reduce the number of parameters and resend the request.
> {prepstmnt -1461118340
> SELECT t0.TRANSACTION_ID, t1.STORAGE_BLOB_ID
> FROM PULL_DESTINATION_RUNTIME_DATA t0 INNER JOIN PULL_STORAGE_BLOB_IDS
> t1 ON t0.TRANSACTION_ID = t1.TRANSACTION_ID
> WHERE t0.TRANSACTION_ID IN (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
> ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
> ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
> ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
> ?, ?, ?, ?, ?, ?, ?, ?, ....................................
> [8/9/16 11:34:21:634 EDT] 00000123 SystemErr
> R at
> org.apache.openjpa.jdbc.sql.DBDictionary.narrow(DBDictionary.java:4991)
> [8/9/16 11:34:21:680 EDT] 00000123 SystemErr
> R at
> org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:4951)
> [8/9/16 11:34:21:680 EDT] 00000123 SystemErr
> R at
> org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:136)
> [8/9/16 11:34:21:680 EDT] 00000123 SystemErr
> R at
> org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:118)
> [8/9/16 11:34:21:680 EDT] 00000123 SystemErr
> R at
> org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:70)
> [8/9/16 11:34:21:680 EDT] 00000123 SystemErr
> R at
> org.apache.openjpa.jdbc.kernel.SelectResultObjectProvider.handleCheckedException(SelectResultObjectProvider.java:155)
> [8/9/16 11:34:21:680 EDT] 00000123 SystemErr
> R at
> org.apache.openjpa.lib.rop.WindowResultList.getInternal(WindowResultList.java:150)
> [8/9/16 11:34:21:680 EDT] 00000123 SystemErr
> R at
> org.apache.openjpa.lib.rop.AbstractNonSequentialResultList.get(AbstractNonSequentialResultList.java:73)
> [8/9/16 11:34:21:680 EDT] 00000123 SystemErr
> R at
> org.apache.openjpa.kernel.DelegatingResultList.get(DelegatingResultList.java:259)
> [8/9/16 11:34:21:680 EDT] 00000123 SystemErr
> R at
> com.ibm.b2b.cache.preload.MapPreloader.load(MapPreloader.java:277)
> [8/9/16 11:34:21:680 EDT] 00000123 SystemErr
> R at
> com.ibm.b2b.cache.preload.PreloadService$PreloadThread.run(PreloadService.java:180)
> [8/9/16 11:34:21:680 EDT] 00000123 SystemErr
> R at java.lang.Thread.run(Thread.java:798)
> [8/9/16 11:34:21:680 EDT] 00000123 SystemErr
> R Caused by:
> [8/9/16 11:34:21:696 EDT] 00000123 SystemErr
> R org.apache.openjpa.lib.jdbc.ReportingSQLException: The
> incoming request has too many parameters. The server supports a maximum of
> 2100 parameters. Reduce the number of parameters and resend the request.
> {prepstmnt -1461118340
> SELECT t0.TRANSACTION_ID, t1.STORAGE_BLOB_ID
> FROM PULL_DESTINATION_RUNTIME_DATA t0 INNER JOIN PULL_STORAGE_BLOB_IDS
> t1 ON t0.TRANSACTION_ID = t1.TRANSACTION_ID
> WHERE t0.TRANSACTION_ID IN (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
> ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
> ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
> ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
> ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
> ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
> ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)