A unit of work to be performed in the context of a transaction.
Type Parameter
Name
Description
T
Methods
run(TransactionContext transaction)
publicabstractTrun(TransactionContexttransaction)
Invoked by the library framework to perform a single attempt of a transaction. This method
may be called more than once if previous transaction attempts aborted. Each invocation can
perform zero or more reads or queries and can buffer mutations to be applied to the database
when the transaction commits.
The framework will attempt to commit the transaction when this method returns normally. If
commit is successful, the return value from this method will be returned from TransactionRunner#run(TransactionCallable); on failure, the transaction may be retried by
the framework by calling the method again.
If this method raises an exception, one of two things can happen. If some operation in the
transaction has previously detected that the transaction has been aborted, the framework may
retry the transaction. Otherwise, the framework will roll back the transaction, releasing any
locks held, and yield the exception to the caller as a SpannerException of type
ErrorCode#UNKNOWN with the exception as the cause.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-28 UTC."],[],[],null,["# Interface TransactionRunner.TransactionCallable<T> (6.98.1)\n\nVersion latestkeyboard_arrow_down\n\n- [6.98.1 (latest)](/java/docs/reference/google-cloud-spanner/latest/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.98.0](/java/docs/reference/google-cloud-spanner/6.98.0/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.97.1](/java/docs/reference/google-cloud-spanner/6.97.1/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.96.1](/java/docs/reference/google-cloud-spanner/6.96.1/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.95.1](/java/docs/reference/google-cloud-spanner/6.95.1/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.94.0](/java/docs/reference/google-cloud-spanner/6.94.0/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.93.0](/java/docs/reference/google-cloud-spanner/6.93.0/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.89.0](/java/docs/reference/google-cloud-spanner/6.89.0/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.88.0](/java/docs/reference/google-cloud-spanner/6.88.0/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.87.0](/java/docs/reference/google-cloud-spanner/6.87.0/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.86.0](/java/docs/reference/google-cloud-spanner/6.86.0/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.85.0](/java/docs/reference/google-cloud-spanner/6.85.0/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.83.0](/java/docs/reference/google-cloud-spanner/6.83.0/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.82.0](/java/docs/reference/google-cloud-spanner/6.82.0/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.80.1](/java/docs/reference/google-cloud-spanner/6.80.1/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.79.0](/java/docs/reference/google-cloud-spanner/6.79.0/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.77.0](/java/docs/reference/google-cloud-spanner/6.77.0/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.74.1](/java/docs/reference/google-cloud-spanner/6.74.1/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.72.0](/java/docs/reference/google-cloud-spanner/6.72.0/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.71.0](/java/docs/reference/google-cloud-spanner/6.71.0/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.69.0](/java/docs/reference/google-cloud-spanner/6.69.0/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.68.0](/java/docs/reference/google-cloud-spanner/6.68.0/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.66.0](/java/docs/reference/google-cloud-spanner/6.66.0/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.65.1](/java/docs/reference/google-cloud-spanner/6.65.1/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.62.0](/java/docs/reference/google-cloud-spanner/6.62.0/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.60.0](/java/docs/reference/google-cloud-spanner/6.60.0/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.58.0](/java/docs/reference/google-cloud-spanner/6.58.0/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.57.0](/java/docs/reference/google-cloud-spanner/6.57.0/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.56.0](/java/docs/reference/google-cloud-spanner/6.56.0/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.55.0](/java/docs/reference/google-cloud-spanner/6.55.0/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.54.0](/java/docs/reference/google-cloud-spanner/6.54.0/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.53.0](/java/docs/reference/google-cloud-spanner/6.53.0/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.52.1](/java/docs/reference/google-cloud-spanner/6.52.1/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.51.0](/java/docs/reference/google-cloud-spanner/6.51.0/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.50.1](/java/docs/reference/google-cloud-spanner/6.50.1/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.49.0](/java/docs/reference/google-cloud-spanner/6.49.0/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.25.1](/java/docs/reference/google-cloud-spanner/6.25.1/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.24.0](/java/docs/reference/google-cloud-spanner/6.24.0/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.23.4](/java/docs/reference/google-cloud-spanner/6.23.4/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.22.0](/java/docs/reference/google-cloud-spanner/6.22.0/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.21.2](/java/docs/reference/google-cloud-spanner/6.21.2/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.20.0](/java/docs/reference/google-cloud-spanner/6.20.0/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.19.1](/java/docs/reference/google-cloud-spanner/6.19.1/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.18.0](/java/docs/reference/google-cloud-spanner/6.18.0/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.17.4](/java/docs/reference/google-cloud-spanner/6.17.4/com.google.cloud.spanner.TransactionRunner.TransactionCallable)\n- [6.14.1](/java/docs/reference/google-cloud-spanner/6.14.1/com.google.cloud.spanner.TransactionRunner.TransactionCallable) \n\n public static interface TransactionRunner.TransactionCallable\u003cT\u003e\n\nA unit of work to be performed in the context of a transaction.\n\nMethods\n-------\n\n### run(TransactionContext transaction)\n\n public abstract T run(TransactionContext transaction)\n\nInvoked by the library framework to perform a single attempt of a transaction. This method\nmay be called more than once if previous transaction attempts aborted. Each invocation can\nperform zero or more reads or queries and can buffer mutations to be applied to the database\nwhen the transaction commits.\n\nThe framework will attempt to commit the transaction when this method returns normally. If\ncommit is successful, the return value from this method will be returned from [TransactionRunner#run(TransactionCallable)](/java/docs/reference/google-cloud-spanner/latest/com.google.cloud.spanner.TransactionRunner#com_google_cloud_spanner_TransactionRunner_run_); on failure, the transaction may be retried by\nthe framework by calling the method again.\n\nIf this method raises an exception, one of two things can happen. If some operation in the\ntransaction has previously detected that the transaction has been aborted, the framework may\nretry the transaction. Otherwise, the framework will roll back the transaction, releasing any\nlocks held, and yield the exception to the caller as a [SpannerException](/java/docs/reference/google-cloud-spanner/latest/com.google.cloud.spanner.SpannerException) of type\n[ErrorCode#UNKNOWN](/java/docs/reference/google-cloud-spanner/latest/com.google.cloud.spanner.ErrorCode#com_google_cloud_spanner_ErrorCode_UNKNOWN) with the exception as the cause."]]