[
https://issues.apache.org/jira/browse/OPENJPA-2656?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Namrata Jaiswal updated OPENJPA-2656:
-------------------------------------
Summary: When an embedded table is used and there is huge entries for
entity, openjpa fails to load data as it uses IN clause while joining tables
(was: 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)
> When an embedded table is used and there is huge entries for entity, openjpa
> 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)