---
title: "SQL-245: Retrieve OutputLog via ReplaceImageIdsInOutputLog"
summary: Read operation against OutputLog via NHibernate ORM.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-09-24
library: SAIF.Services
reference_type: package
---

# SQL-245: Retrieve OutputLog via ReplaceImageIdsInOutputLog

This ORM statement retrieves `OutputLog` rows for a given output document and image, so their image id can be replaced in memory, via `IUnitOfWork.GetRepository<T>()`, executed from `Services/SAIF.Services/OutputDocuments/PolicyDocumentsService.cs (L476-479)`.

## Classification

| Field | Value |
| --- | --- |
| **SQL ID** | SQL-245 |
| **Operation type** | Read |
| **Execution method** | ORM (NHibernate LINQ) |
| **Database** | Oracle |
| **Schema** | [unqualified]** |
| **Command type** | N/A (ORM-generated) |
| **Business object** | `PolicyDocumentsService` |
| **Criteria property** | N/A — ORM |
| **Lifecycle method** | `ReplaceImageIdsInOutputLog` |

## Parameters

| Parameter | Direction | Type | Max length | Description |
| --- | --- | --- | --- | --- |
| `:Id` | Input | long | N/A | `replace.Id`, matched against `output_document_seq_num` |
| `:ImageId` | Input | long | N/A | `existingDoc.OutputDocument.ImageId`, matched against `image_seq_num` |

## Tables

| Table | Access | Columns used |
| --- | --- | --- |
| [OUTPUT_LOG](../database-tables.md#output_log) | SELECT | `output_log_seq_num`, `image_seq_num`, `output_document_seq_num`, `policy_num`, `doc_type_code` |

## LINQ statement

Source: `Services/SAIF.Services/OutputDocuments/PolicyDocumentsService.cs:476`

```csharp
// Services/SAIF.Services/OutputDocuments/PolicyDocumentsService.cs:476-479
unitOfWork.GetRepository<OutputLog>().Query()
    .Where(x => x.OutputDocumentId == replace.Id && x.ImageId == existingDoc.OutputDocument.ImageId)
    .ToArray()
    .Each(x => x.ImageId = replace.ReplacementImageId);
```

## Sample SQL

> **Inferred SQL:** This SQL was inferred from the LINQ statement above and the NHibernate mappings. It is not concrete SQL from source code; NHibernate generates the executed statement at runtime, so aliases, column order, join syntax, and bind-parameter names may differ.

```sql
-- Inferred from LINQ (NHibernate mapping translation); not concrete SQL
SELECT
  OL.output_log_seq_num,
  OL.image_seq_num,
  OL.output_document_seq_num,
  OL.policy_num,
  OL.doc_type_code
FROM output_log OL
WHERE OL.output_document_seq_num = :Id
  AND OL.image_seq_num = :ImageId
```

Translation notes:
- `.ToArray()` is the materialization point; `.Each(x => x.ImageId = replace.ReplacementImageId)` runs in memory. Under a stateful session the modified entities are flushed as `UPDATE output_log` statements at commit; that write is not part of this Read statement.
- `existingDoc.OutputDocument.ImageId` is a member of an already-loaded captured object and is bound as a value — it does not navigate from the queried entity, so `output_document` is not joined.

## Operations and processes
- PolicyDocumentsService.ReplaceImageIdsInOutputLog — see [Operations and processes](../operations-processes.md)

## Sources
- `Services/SAIF.Services/OutputDocuments/PolicyDocumentsService.cs (L476)`
