Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] Cache hit

What does the code that runs this query look like?

Kevin Haskett wrote:
Now that I have added that, when I do an update it is going into a
looping condition.

Here is part of the stack trace -
CpTransCoverage._persistence_getcpTransaction() line: not available	
CpTransCoverage._persistence_setcpTransaction(CpTransaction) line: not
available	
CpTransCoverage.setCpTransaction(CpTransaction) line: 135	
CpTransaction.setCpTerrorismCoverage(CpTransCoverage) line: 2226	
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not
available [native method]	
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 79	
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43	
Method.invoke(Object, Object...) line: 618	
PrivilegedAccessHelper.invokeMethod(Method, Object, Object[]) line: 344	
WeavedObjectBasicIndirectionPolicy.setRealAttributeValueInObject(Object,
Object) line: 125	
OneToOneMapping(ForeignReferenceMapping).setRealAttributeValueInObject(O
bject, Object) line: 1038	
OneToOneMapping(ObjectReferenceMapping).mergeIntoObject(Object, boolean,
Object, MergeManager) line: 437	
ObjectBuilder.mergeIntoObject(Object, boolean, Object, MergeManager,
boolean, boolean) line: 2578	
ObjectBuilder.mergeIntoObject(Object, boolean, Object, MergeManager)
line: 2557	
MergeManager.mergeChangesOfOriginalIntoWorkingCopy(Object) line: 526	
MergeManager.mergeChanges(Object, ObjectChangeSet) line: 269	
RepeatableWriteUnitOfWork(UnitOfWorkImpl).revertObject(Object, int)
line: 4355	
ReadObjectQuery(ObjectBuildingQuery).registerIndividualResult(Object,
UnitOfWorkImpl, JoinedAttributeManager) line: 374	
ObjectBuilder.buildWorkingCopyCloneNormally(ObjectBuildingQuery,
AbstractRecord, UnitOfWorkImpl, Vector, ClassDescriptor,
JoinedAttributeManager) line: 582	
ObjectBuilder.buildObjectInUnitOfWork(ObjectBuildingQuery,
JoinedAttributeManager, AbstractRecord, UnitOfWorkImpl, Vector,
ClassDescriptor) line: 544	
ObjectBuilder.buildObject(ObjectBuildingQuery, AbstractRecord,
JoinedAttributeManager) line: 485	
ObjectBuilder.buildObject(ObjectLevelReadQuery, AbstractRecord) line:
437	
ReadObjectQuery(ObjectLevelReadQuery).buildObject(AbstractRecord) line:
571	
ReadObjectQuery.registerResultInUnitOfWork(Object, UnitOfWorkImpl,
AbstractRecord, boolean) line: 712	
ReadObjectQuery.executeObjectLevelReadQuery() line: 436	
ReadObjectQuery(ObjectLevelReadQuery).executeDatabaseQuery() line: 930	
ReadObjectQuery(DatabaseQuery).execute(AbstractSession, AbstractRecord)
line: 664	
ReadObjectQuery(ObjectLevelReadQuery).execute(AbstractSession,
AbstractRecord) line: 891	
ReadObjectQuery.execute(AbstractSession, AbstractRecord) line: 397	
ReadObjectQuery(ObjectLevelReadQuery).executeInUnitOfWork(UnitOfWorkImpl
, AbstractRecord) line: 954	
RepeatableWriteUnitOfWork(UnitOfWorkImpl).internalExecuteQuery(DatabaseQ
uery, AbstractRecord) line: 2697	
RepeatableWriteUnitOfWork(AbstractSession).executeQuery(DatabaseQuery,
AbstractRecord, int) line: 1181	
RepeatableWriteUnitOfWork(AbstractSession).executeQuery(DatabaseQuery,
AbstractRecord) line: 1165	
QueryBasedValueHolder.instantiate(AbstractSession) line: 77	
QueryBasedValueHolder.instantiate() line: 67	
QueryBasedValueHolder(DatabaseValueHolder).getValue() line: 83	
UnitOfWorkQueryValueHolder(UnitOfWorkValueHolder).instantiateImpl()
line: 161	
UnitOfWorkQueryValueHolder(UnitOfWorkValueHolder).instantiate() line:
230	
UnitOfWorkQueryValueHolder(DatabaseValueHolder).getValue() line: 83	
CpTransCoverage._persistence_getcpTransaction() line: not available	
CpTransCoverage._persistence_setcpTransaction(CpTransaction) line: not
available	
CpTransCoverage.setCpTransaction(CpTransaction) line: 135	
CpTransaction.setCpTerrorismCoverage(CpTransCoverage) line: 2226	
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not
available [native method]	
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 79	
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43	
Method.invoke(Object, Object...) line: 618	
PrivilegedAccessHelper.invokeMethod(Method, Object, Object[]) line: 344	
WeavedObjectBasicIndirectionPolicy.setRealAttributeValueInObject(Object,
Object) line: 125	
OneToOneMapping(ForeignReferenceMapping).setRealAttributeValueInObject(O
bject, Object) line: 1038	
OneToOneMapping(ObjectReferenceMapping).mergeIntoObject(Object, boolean,
Object, MergeManager) line: 437	
ObjectBuilder.mergeIntoObject(Object, boolean, Object, MergeManager,
boolean, boolean) line: 2578	
ObjectBuilder.mergeIntoObject(Object, boolean, Object, MergeManager)
line: 2557	
MergeManager.mergeChangesOfOriginalIntoWorkingCopy(Object) line: 526	
MergeManager.mergeChanges(Object, ObjectChangeSet) line: 269	
RepeatableWriteUnitOfWork(UnitOfWorkImpl).revertObject(Object, int)
line: 4355	
ReadObjectQuery(ObjectBuildingQuery).registerIndividualResult(Object,
UnitOfWorkImpl, JoinedAttributeManager) line: 374	
ObjectBuilder.buildWorkingCopyCloneNormally(ObjectBuildingQuery,
AbstractRecord, UnitOfWorkImpl, Vector, ClassDescriptor,
JoinedAttributeManager) line: 582	
ObjectBuilder.buildObjectInUnitOfWork(ObjectBuildingQuery,
JoinedAttributeManager, AbstractRecord, UnitOfWorkImpl, Vector,
ClassDescriptor) line: 544	
ObjectBuilder.buildObject(ObjectBuildingQuery, AbstractRecord,
JoinedAttributeManager) line: 485	
ObjectBuilder.buildObject(ObjectLevelReadQuery, AbstractRecord) line:
437	
ReadObjectQuery(ObjectLevelReadQuery).buildObject(AbstractRecord) line:
571	
ReadObjectQuery.registerResultInUnitOfWork(Object, UnitOfWorkImpl,
AbstractRecord, boolean) line: 712	
ReadObjectQuery.executeObjectLevelReadQuery() line: 436	
ReadObjectQuery(ObjectLevelReadQuery).executeDatabaseQuery() line: 930	
ReadObjectQuery(DatabaseQuery).execute(AbstractSession, AbstractRecord)
line: 664	
ReadObjectQuery(ObjectLevelReadQuery).execute(AbstractSession,
AbstractRecord) line: 891	
ReadObjectQuery.execute(AbstractSession, AbstractRecord) line: 397	
ReadObjectQuery(ObjectLevelReadQuery).executeInUnitOfWork(UnitOfWorkImpl
, AbstractRecord) line: 954	
RepeatableWriteUnitOfWork(UnitOfWorkImpl).internalExecuteQuery(DatabaseQ
uery, AbstractRecord) line: 2697	
RepeatableWriteUnitOfWork(AbstractSession).executeQuery(DatabaseQuery,
AbstractRecord, int) line: 1181	
RepeatableWriteUnitOfWork(AbstractSession).executeQuery(DatabaseQuery,
AbstractRecord) line: 1165	
QueryBasedValueHolder.instantiate(AbstractSession) line: 77	
QueryBasedValueHolder.instantiate() line: 67	
QueryBasedValueHolder(DatabaseValueHolder).getValue() line: 83	
UnitOfWorkQueryValueHolder(UnitOfWorkValueHolder).instantiateImpl()
line: 161	
UnitOfWorkQueryValueHolder(UnitOfWorkValueHolder).instantiate() line:
230	
UnitOfWorkQueryValueHolder(DatabaseValueHolder).getValue() line: 83	
CpTransCoverage._persistence_getcpTransaction() line: not available	
CpTransCoverage._persistence_setcpTransaction(CpTransaction) line: not
available	
CpTransCoverage.setCpTransaction(CpTransaction) line: 135	
CpTransaction.setCpTerrorismCoverage(CpTransCoverage) line: 2226	
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not
available [native method]	
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 79	
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43	
Method.invoke(Object, Object...) line: 618	
PrivilegedAccessHelper.invokeMethod(Method, Object, Object[]) line: 344	
WeavedObjectBasicIndirectionPolicy.setRealAttributeValueInObject(Object,
Object) line: 125	
WeavedObjectBasicIndirectionPolicy.updateValueInObject(Object, Object,
Object) line: 93	
WeavedObjectBasicIndirectionPolicy.getRealAttributeValueFromObject(Objec
t, Object) line: 61	
OneToOneMapping(ForeignReferenceMapping).getRealAttributeValueFromAttrib
ute(Object, Object, AbstractSession) line: 614	
OneToOneMapping(ObjectReferenceMapping).getRealAttributeValueFromAttribu
te(Object, Object, AbstractSession) line: 277	
OneToOneMapping(DatabaseMapping).getRealAttributeValueFromObject(Object,
AbstractSession) line: 549	
OneToOneMapping(ObjectReferenceMapping).mergeIntoObject(Object, boolean,
Object, MergeManager) line: 403	
ObjectBuilder.mergeIntoObject(Object, boolean, Object, MergeManager,
boolean, boolean) line: 2578	
MergeManager.mergeChangesOfCloneIntoWorkingCopy(Object) line: 500	
MergeManager.mergeChanges(Object, ObjectChangeSet) line: 267	
RepeatableWriteUnitOfWork(UnitOfWorkImpl).mergeCloneWithReferences(Objec
t, MergeManager) line: 3334	
RepeatableWriteUnitOfWork.mergeCloneWithReferences(Object, MergeManager)
line: 257	
RepeatableWriteUnitOfWork(UnitOfWorkImpl).mergeCloneWithReferences(Objec
t, int, boolean) line: 3298	
EntityManagerImpl.mergeInternal(Object) line: 296	
EntityManagerImpl.merge(T) line: 274	
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not
available [native method]	
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 79	
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43	
Method.invoke(Object, Object...) line: 618	
SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(O
bject, Method, Object[]) line: 198	
$Proxy43.merge(Object) line: not available	
CpTransactionManagerImpl.update(CpTransaction) line: 180	
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not
available [native method]	
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 79	
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43	
Method.invoke(Object, Object...) line: 618	
AopUtils.invokeJoinpointUsingReflection(Object, Method, Object[]) line:
307	
ReflectiveMethodInvocation.invokeJoinpoint() line: 182	
ReflectiveMethodInvocation.proceed() line: 149	
PersistenceExceptionTranslationInterceptor.invoke(MethodInvocation)
line: 138	
ReflectiveMethodInvocation.proceed() line: 171	
TransactionInterceptor.invoke(MethodInvocation) line: 106	
ReflectiveMethodInvocation.proceed() line: 171	
JdkDynamicAopProxy.invoke(Object, Method, Object[]) line: 204	
$Proxy58.update(CpTransaction) line: not available	
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not
available [native method]	
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 79	
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43	
Method.invoke(Object, Object...) line: 618	
AopUtils.invokeJoinpointUsingReflection(Object, Method, Object[]) line:
307	
ReflectiveMethodInvocation.invokeJoinpoint() line: 182	
ReflectiveMethodInvocation.proceed() line: 149	
TransactionInterceptor.invoke(MethodInvocation) line: 106	
ReflectiveMethodInvocation.proceed() line: 171	
JdkDynamicAopProxy.invoke(Object, Method, Object[]) line: 204	
$Proxy59.update(CpTransaction) line: not available	
PropertyAction(CppBaseAction).persistCpTrans(CpTransaction,
HttpServletRequest) line: 1195

This is happening on the udpate of the enitity I added the queryhint to
on the find.
Seems like it keeps circulating between the CpTransCoverage entity and
the CpTransaction.

Any ideas on this one?

-----Original Message-----
From: eclipselink-users-bounces@xxxxxxxxxxx
[mailto:eclipselink-users-bounces@xxxxxxxxxxx] On Behalf Of Tom Ware
Sent: Wednesday, May 20, 2009 10:55 AM
To: Tom Ware
Cc: EclipseLink User Discussions
Subject: Re: [eclipselink-users] Cache hit

Sorry...  accidentally hit send too early.

Here's the info about the refresh hint:

http://wiki.eclipse.org/Using_EclipseLink_JPA_Extensions_%28ELUG%29#Refr
esh

I apologize for giving you information that solves a more complex
problem than the one you are encountering in my initial response.  The
cache usage setting relates to how EclipseLink will determine whether an
object exists or not, rather than a simple refresh.

-Tom

Tom Ware wrote:
Have you tried entityManager.refresh(object) that will guarantee SQL goes to the DB?

The refresh hint on your query will also likely solve your issue:


If that solves you

khaskett wrote:
I changed the code for a find to be this - <code>
final String queryString = "select model from CpTransaction model where model.transactionId = :propertyValue";
            final Query query = em.createQuery(queryString);
            query.setParameter("propertyValue", id);
            query.setHint(QueryHints.CACHE_USAGE,
CacheUsage.DoNotCheckCache);
            return (CpTransaction) query.getSingleResult(); </code>

And now I see this call in the logs -

[5/20/09 10:34:50:203 CDT] 0000003e SystemOut     O [EL Fine]:
2009-05-20
10:34:50.203--ServerSession(421796132)--Connection(1967945036)--Threa
d(Thread[WebContainer

: 4,5,main])--SELECT TRANSACTION_ID, PREMIUM_ACTUAL, PREMIUM_NET, AUDIT_REPORT, REINSURANCE_TYPE, TRANSITION_YEAR, INSURED_EMAIL, CREATION_DATE, PREVIOUS_POLICY_NUMBER, PREMIUM_TARGET, COMPANY_CODE, BILL_CHANGE, DELETION_DATE, BILL_TYPE_RENEWAL, LOCK_SESSION, TRANSACTION_STATUS, DEC_IND, PROGRAM_TYPE, PRINT_NOTICE, PROCESSING_DATE, INSURED_SUPPLEMENTARY_TYPE, TRANSACTION_UW, SETUP_DATE, MAIL_TYPE, EXCLUDE_PKG_DISC, REASON_CODE, PT_EMPLOYEE_COUNT, DOC_MGMT_FLAG, BILL_PLAN_RENEWAL, SHORT_TERM_FACTOR, RATE_EFFECTIVE_DATE, PCT_TERM, ACORD_FLAG, INSURED_SUPPLEMENTARY_NAME, LOCK_EDITOR, BILL_PLAN, EMPLOYEE_COUNT, TRANSACTION_FORMAT, BILL_ACCOUNT, TRANSACTION_FLAG, RELATED_POLICY_NUMBER, PREMIUM_PREVIOUS, INSURED_FAX, REINSURANCE_COST, RATE_LEVEL, OOS_DATA, PREMIUM_WAIVED_IND, TRANSACTION_DESC, TRANSACTION_LABEL, RATING_FLAG, MODIFICATION_DATE, PRIMARY_STATE, POLICY_NUMBER, INSURED_PHONE, PRODUCER, PREMIUM_MIN, TRANSACTION_TYPE, PARENT_TRANSACTION_ID, CONTACT_PHONE, BILL_TYPE, BILL_TO_RENEWAL, APPROVAL_INITIALS, EFFECTIVE_DATE, BILL_TO, PREMIUM_RECALC_MIN_IND, RENEWAL_TYPE, ACCOUNT_NUM, SUSPENSE_NUMBER, SHORT_TERM_INDICATOR, INSURED_NAME, SUSPENSE_AMT, BUSINESS_TYPE_DETAIL, CONTACT_NAME, LOCK_OWNER, POLICY_TYPE, BUSINESS_TYPE, BUSINESS_DESCRIPTION, EXPIRATION_DATE, PREMIUM_WAIVED,

INSURED_FEIN, REASON_DESC, CONTRACT_NUMBER, CHANGE_DATE, RATE_TABLE_DATE, DENY_FLAG, REINSURANCE_COMPANY, YRS_BUS, AGENCY_EFT,

AGT_RESET, AUDIT_TYPE, POLICY_LOB, PREMIUM_MEET_MIN, AUDIT_NAME, INSURED_MAILING_NAME, BUSINESS_PHONE, POLICY_PMA, ACTION_CODE, INSURED_CITY, INSURED_COUNTY, INSURED_ADDRESS_2, INSURED_ADDRESS_1, INSURED_STATE, INSURED_POSTAL_CODE FROM CP_TRANSACTION WHERE (TRANSACTION_ID = CAST (? AS BIGINT ))
    bind => [32967]

But I am getting an old copy of the data. I can use a tool like SQLSquirrel and I see that it has data that is not reflected in what is being returned by the find.

How is that possible?


tware wrote:
Although the following are not specifically for "find" operations, they may be helpful.

First, try writing a query that makes use of caching hints:

http://wiki.eclipse.org/Using_EclipseLink_JPA_Extensions_%28ELUG%29#
Cache_Usage


For configuring on a more broad scale there are some entity-level config options here:

http://wiki.eclipse.org/Using_EclipseLink_JPA_Extensions_%28ELUG%29#
How_to_Use_the_.40Cache_Annotation




khaskett wrote:
Is there a way on a find, to know if the value returned was from the cache or was a DB read? Or is there a way to always force a read from the database on a find?

_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users


_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users


This message (including any attachments) is intended only for
the use of the individual or entity to which it is addressed and
may contain information that is non-public, proprietary,
privileged, confidential, and exempt from disclosure under
applicable law or may constitute as attorney work product.
If you are not the intended recipient, you are hereby notified
that any use, dissemination, distribution, or copying of this
communication is strictly prohibited. If you have received this
communication in error, notify us immediately by telephone and
(i) destroy this message if a facsimile or (ii) delete this message
immediately if this is an electronic communication.

Thank you.
_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users


Back to the top