Spring3 min de leitura

Auditoria de entidades JPA com Embeddables e Entity Listeners

Auditoria Automática no JPA: Guia Prático com @Embeddable e @EntityListeners


Muitas vezes, precisamos rastrear quem criou ou modificou um registro e quando isso ocorreu. Embora o uso de @MappedSuperclass seja comum, a utilização de tipos embutidos (@Embeddable) oferece uma alternativa elegante para reutilizar propriedades entre múltiplas entidades.

1. O Modelo de Dados de Auditoria (@Embeddable)

O primeiro passo é encapsular os campos de auditoria em uma classe anotada com @Embeddable. Isso permite que esses quatro campos (created_by, created_on, updated_by, updated_on) sejam tratados como uma única unidade reutilizável.

&amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-meta&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-meta&quot;</span>&gt;<span class="hljs-meta">@Embeddable</span>&lt;/span&gt;&amp;lt;/span&amp;gt;
&amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-keyword&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-keyword&quot;</span>&gt;<span class="hljs-keyword">public</span>&lt;/span&gt;&amp;lt;/span&amp;gt; &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-keyword&amp;quot;&lt;/span&gt;&amp;gt;class&amp;lt;/span&amp;gt; &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-title class_&amp;quot;&lt;/span&gt;&amp;gt;Audit&amp;lt;/span&amp;gt; {
    &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-meta&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-meta&quot;</span>&gt;<span class="hljs-meta">@Column(name = &amp;amp;quot;created_on&amp;amp;quot;)</span>&lt;/span&gt;&amp;lt;/span&amp;gt;
    &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-keyword&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-keyword&quot;</span>&gt;<span class="hljs-keyword">private</span>&lt;/span&gt;&amp;lt;/span&amp;gt; LocalDateTime createdOn;

    &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-meta&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-meta&quot;</span>&gt;<span class="hljs-meta">@Column(name = &amp;amp;quot;created_by&amp;amp;quot;)</span>&lt;/span&gt;&amp;lt;/span&amp;gt;
    &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-keyword&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-keyword&quot;</span>&gt;<span class="hljs-keyword">private</span>&lt;/span&gt;&amp;lt;/span&amp;gt; String createdBy;

    &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-meta&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-meta&quot;</span>&gt;<span class="hljs-meta">@Column(name = &amp;amp;quot;updated_on&amp;amp;quot;)</span>&lt;/span&gt;&amp;lt;/span&amp;gt;
    &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-keyword&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-keyword&quot;</span>&gt;<span class="hljs-keyword">private</span>&lt;/span&gt;&amp;lt;/span&amp;gt; LocalDateTime updatedOn;

    &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-meta&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-meta&quot;</span>&gt;<span class="hljs-meta">@Column(name = &amp;amp;quot;updated_by&amp;amp;quot;)</span>&lt;/span&gt;&amp;lt;/span&amp;gt;
    &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-keyword&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-keyword&quot;</span>&gt;<span class="hljs-keyword">private</span>&lt;/span&gt;&amp;lt;/span&amp;gt; String updatedBy;

    &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-comment&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-comment&quot;</span>&gt;<span class="hljs-comment">// Getters e setters omitidos para brevidade&amp;lt;/span&amp;gt;&lt;/span&gt;</span>
}

2. Definindo a Interface Auditable

Para que nosso "ouvinte" de eventos (Listener) consiga manipular os dados de auditoria de forma genérica, definimos uma interface que as entidades deverão implementar.

&amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-keyword&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-keyword&quot;</span>&gt;<span class="hljs-keyword">public</span>&lt;/span&gt;&amp;lt;/span&amp;gt; &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-keyword&amp;quot;&lt;/span&gt;&amp;gt;interface&amp;lt;/span&amp;gt; &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-title class_&amp;quot;&lt;/span&gt;&amp;gt;Auditable&amp;lt;/span&amp;gt; {
    Audit &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-title function_&amp;quot;&lt;/span&gt;&amp;gt;getAudit&amp;lt;/span&amp;gt;&amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-params&amp;quot;&lt;/span&gt;&amp;gt;()&amp;lt;/span&amp;gt;;
    &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-keyword&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-keyword&quot;</span>&gt;<span class="hljs-keyword">void</span>&lt;/span&gt;&amp;lt;/span&amp;gt; &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-title function_&amp;quot;&lt;/span&gt;&amp;gt;setAudit&amp;lt;/span&amp;gt;&amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-params&amp;quot;&lt;/span&gt;&amp;gt;(Audit audit)&amp;lt;/span&amp;gt;;
}

3. O Ouvinte de Eventos (@EntityListeners)

O AuditListener é o coração da automação. Ele utiliza anotações de ciclo de vida do JPA para interceptar operações de banco de dados:

@PrePersist: Executado antes da inserção (INSERT). @PreUpdate: Executado antes da atualização (UPDATE).

&amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-keyword&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-keyword&quot;</span>&gt;<span class="hljs-keyword">public</span>&lt;/span&gt;&amp;lt;/span&amp;gt; &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-keyword&amp;quot;&lt;/span&gt;&amp;gt;class&amp;lt;/span&amp;gt; &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-title class_&amp;quot;&lt;/span&gt;&amp;gt;AuditListener&amp;lt;/span&amp;gt; {
    &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-meta&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-meta&quot;</span>&gt;<span class="hljs-meta">@PrePersist</span>&lt;/span&gt;&amp;lt;/span&amp;gt;
    &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-keyword&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-keyword&quot;</span>&gt;<span class="hljs-keyword">public</span>&lt;/span&gt;&amp;lt;/span&amp;gt; &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-keyword&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-keyword&quot;</span>&gt;<span class="hljs-keyword">void</span>&lt;/span&gt;&amp;lt;/span&amp;gt; &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-title function_&amp;quot;&lt;/span&gt;&amp;gt;setCreatedOn&amp;lt;/span&amp;gt;&amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-params&amp;quot;&lt;/span&gt;&amp;gt;(Auditable auditable)&amp;lt;/span&amp;gt; {
        &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-type&amp;quot;&lt;/span&gt;&amp;gt;Audit&amp;lt;/span&amp;gt; &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-variable&amp;quot;&lt;/span&gt;&amp;gt;audit&amp;lt;/span&amp;gt; &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-operator&amp;quot;&lt;/span&gt;&amp;gt;=&amp;lt;/span&amp;gt; auditable.getAudit();
        &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-keyword&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-keyword&quot;</span>&gt;<span class="hljs-keyword">if</span>&lt;/span&gt;&amp;lt;/span&amp;gt; (audit == &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-literal&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-literal&quot;</span>&gt;<span class="hljs-literal">null</span>&lt;/span&gt;&amp;lt;/span&amp;gt;) {
            audit = &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-keyword&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-keyword&quot;</span>&gt;<span class="hljs-keyword">new</span>&lt;/span&gt;&amp;lt;/span&amp;gt; &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-title class_&amp;quot;&lt;/span&gt;&amp;gt;Audit&amp;lt;/span&amp;gt;();
            auditable.setAudit(audit);
        }
        audit.setCreatedOn(LocalDateTime.now());
        audit.setCreatedBy(LoggedUser.get()); &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-comment&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-comment&quot;</span>&gt;<span class="hljs-comment">// Utilitário para obter usuário logado&amp;lt;/span&amp;gt;&lt;/span&gt;</span>
    }

    &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-meta&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-meta&quot;</span>&gt;<span class="hljs-meta">@PreUpdate</span>&lt;/span&gt;&amp;lt;/span&amp;gt;
    &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-keyword&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-keyword&quot;</span>&gt;<span class="hljs-keyword">public</span>&lt;/span&gt;&amp;lt;/span&amp;gt; &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-keyword&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-keyword&quot;</span>&gt;<span class="hljs-keyword">void</span>&lt;/span&gt;&amp;lt;/span&amp;gt; &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-title function_&amp;quot;&lt;/span&gt;&amp;gt;setUpdatedOn&amp;lt;/span&amp;gt;&amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-params&amp;quot;&lt;/span&gt;&amp;gt;(Auditable auditable)&amp;lt;/span&amp;gt; {
        &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-type&amp;quot;&lt;/span&gt;&amp;gt;Audit&amp;lt;/span&amp;gt; &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-variable&amp;quot;&lt;/span&gt;&amp;gt;audit&amp;lt;/span&amp;gt; &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-operator&amp;quot;&lt;/span&gt;&amp;gt;=&amp;lt;/span&amp;gt; auditable.getAudit();
        audit.setUpdatedOn(LocalDateTime.now());
        audit.setUpdatedBy(LoggedUser.get());
    }
}

4. Aplicando às Entidades

Agora, basta aplicar a anotação @EntityListeners e implementar a interface Auditable em suas entidades, como no exemplo da classe Post:

&amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-meta&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-meta&quot;</span>&gt;<span class="hljs-meta">@Entity(name = &amp;amp;quot;Post&amp;amp;quot;)</span>&lt;/span&gt;&amp;lt;/span&amp;gt;
&amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-meta&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-meta&quot;</span>&gt;<span class="hljs-meta">@Table(name = &amp;amp;quot;post&amp;amp;quot;)</span>&lt;/span&gt;&amp;lt;/span&amp;gt;
&amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-meta&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-meta&quot;</span>&gt;<span class="hljs-meta">@EntityListeners(AuditListener.class)</span>&lt;/span&gt;&amp;lt;/span&amp;gt;
&amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-keyword&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-keyword&quot;</span>&gt;<span class="hljs-keyword">public</span>&lt;/span&gt;&amp;lt;/span&amp;gt; &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-keyword&amp;quot;&lt;/span&gt;&amp;gt;class&amp;lt;/span&amp;gt; &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-title class_&amp;quot;&lt;/span&gt;&amp;gt;Post&amp;lt;/span&amp;gt; &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-keyword&amp;quot;&lt;/span&gt;&amp;gt;implements&amp;lt;/span&amp;gt; &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-title class_&amp;quot;&lt;/span&gt;&amp;gt;Auditable&amp;lt;/span&amp;gt; {
    &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-meta&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-meta&quot;</span>&gt;<span class="hljs-meta">@Id</span>&lt;/span&gt;&amp;lt;/span&amp;gt;
    &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-keyword&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-keyword&quot;</span>&gt;<span class="hljs-keyword">private</span>&lt;/span&gt;&amp;lt;/span&amp;gt; Long id;

    &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-meta&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-meta&quot;</span>&gt;<span class="hljs-meta">@Embedded</span>&lt;/span&gt;&amp;lt;/span&amp;gt;
    &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-keyword&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-keyword&quot;</span>&gt;<span class="hljs-keyword">private</span>&lt;/span&gt;&amp;lt;/span&amp;gt; Audit audit;

    &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-keyword&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-keyword&quot;</span>&gt;<span class="hljs-keyword">private</span>&lt;/span&gt;&amp;lt;/span&amp;gt; String title;
    
    &amp;lt;span class=&lt;span class=<span class="hljs-string">&quot;hljs-string&quot;</span>&gt;&amp;quot;hljs-comment&amp;quot;&lt;/span&gt;&amp;gt;&lt;span class=<span class="hljs-string">&quot;hljs-comment&quot;</span>&gt;<span class="hljs-comment">// Getters e setters&amp;lt;/span&amp;gt;&lt;/span&gt;</span>
}

5. Resultados na Prática

Ao persistir ou atualizar uma entidade, o Hibernate cuida automaticamente das colunas de auditoria.

Exemplo de INSERT gerado automaticamente:

<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span class<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;=</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>quot;hljs<span class="hljs-operator">-</span>keyword<span class="hljs-operator">&amp;</span>quot;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-keyword&quot;<span class="hljs-operator">&gt;</span><span class="hljs-keyword">INSERT INTO</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">/</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span> post (created_by, created_on, updated_by, updated_on, title, id)
<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span class<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;=</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>quot;hljs<span class="hljs-operator">-</span>keyword<span class="hljs-operator">&amp;</span>quot;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-keyword&quot;<span class="hljs-operator">&gt;</span><span class="hljs-keyword">VALUES</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">/</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span> (<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span class<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;=</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>quot;hljs<span class="hljs-operator">-</span>string<span class="hljs-operator">&amp;</span>quot;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>amp;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>#x27;Joao<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>amp;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>#x27;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">/</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>, <span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span class<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;=</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>quot;hljs<span class="hljs-operator">-</span>string<span class="hljs-operator">&amp;</span>quot;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>amp;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>#x27;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-number&quot;<span class="hljs-operator">&gt;</span><span class="hljs-number">2026</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-number&quot;<span class="hljs-operator">&gt;</span><span class="hljs-number">-04</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-number&quot;<span class="hljs-operator">&gt;</span><span class="hljs-number">-20</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span> <span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-number&quot;<span class="hljs-operator">&gt;</span><span class="hljs-number">11</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>:<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-number&quot;<span class="hljs-operator">&gt;</span><span class="hljs-number">17</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>:<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-number&quot;<span class="hljs-operator">&gt;</span><span class="hljs-number">40.552</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>amp;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>#x27;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">/</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>, <span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span class<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;=</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>quot;hljs<span class="hljs-operator">-</span>keyword<span class="hljs-operator">&amp;</span>quot;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-keyword&quot;<span class="hljs-operator">&gt;</span><span class="hljs-keyword">NULL</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">/</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>, <span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span class<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;=</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>quot;hljs<span class="hljs-operator">-</span>keyword<span class="hljs-operator">&amp;</span>quot;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-keyword&quot;<span class="hljs-operator">&gt;</span><span class="hljs-keyword">NULL</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">/</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>, <span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span class<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;=</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>quot;hljs<span class="hljs-operator">-</span>string<span class="hljs-operator">&amp;</span>quot;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>amp;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>#x27;Título do Post<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>amp;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>#x27;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">/</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>, <span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span class<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;=</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>quot;hljs<span class="hljs-operator">-</span>number<span class="hljs-operator">&amp;</span>quot;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-number&quot;<span class="hljs-operator">&gt;</span><span class="hljs-number">1</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">/</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>)

Exemplo de UPDATE gerado automaticamente:

<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span class<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;=</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>quot;hljs<span class="hljs-operator">-</span>keyword<span class="hljs-operator">&amp;</span>quot;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-keyword&quot;<span class="hljs-operator">&gt;</span><span class="hljs-keyword">UPDATE</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">/</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span> post 
<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span class<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;=</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>quot;hljs<span class="hljs-operator">-</span>keyword<span class="hljs-operator">&amp;</span>quot;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-keyword&quot;<span class="hljs-operator">&gt;</span><span class="hljs-keyword">SET</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">/</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span> created_by <span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span class<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;=</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>quot;hljs<span class="hljs-operator">-</span>operator<span class="hljs-operator">&amp;</span>quot;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">=</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">/</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span> <span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span class<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;=</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>quot;hljs<span class="hljs-operator">-</span>string<span class="hljs-operator">&amp;</span>quot;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>amp;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>#x27;Joao<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>amp;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>#x27;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">/</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>, created_on <span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span class<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;=</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>quot;hljs<span class="hljs-operator">-</span>operator<span class="hljs-operator">&amp;</span>quot;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">=</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">/</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span> <span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span class<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;=</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>quot;hljs<span class="hljs-operator">-</span>string<span class="hljs-operator">&amp;</span>quot;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>amp;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>#x27;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-number&quot;<span class="hljs-operator">&gt;</span><span class="hljs-number">2026</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-number&quot;<span class="hljs-operator">&gt;</span><span class="hljs-number">-04</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-number&quot;<span class="hljs-operator">&gt;</span><span class="hljs-number">-20</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span> <span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-number&quot;<span class="hljs-operator">&gt;</span><span class="hljs-number">09</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>:<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-number&quot;<span class="hljs-operator">&gt;</span><span class="hljs-number">17</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>:<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-number&quot;<span class="hljs-operator">&gt;</span><span class="hljs-number">40.552</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>amp;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>#x27;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">/</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>, 
    updated_by <span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span class<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;=</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>quot;hljs<span class="hljs-operator">-</span>operator<span class="hljs-operator">&amp;</span>quot;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">=</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">/</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span> <span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span class<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;=</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>quot;hljs<span class="hljs-operator">-</span>string<span class="hljs-operator">&amp;</span>quot;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>amp;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>#x27;Maria<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>amp;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>#x27;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">/</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>, updated_on <span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span class<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;=</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>quot;hljs<span class="hljs-operator">-</span>operator<span class="hljs-operator">&amp;</span>quot;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">=</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">/</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span> <span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span class<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;=</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>quot;hljs<span class="hljs-operator">-</span>string<span class="hljs-operator">&amp;</span>quot;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>amp;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>#x27;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-number&quot;<span class="hljs-operator">&gt;</span><span class="hljs-number">2026</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-number&quot;<span class="hljs-operator">&gt;</span><span class="hljs-number">-04</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-number&quot;<span class="hljs-operator">&gt;</span><span class="hljs-number">-20</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span> <span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-number&quot;<span class="hljs-operator">&gt;</span><span class="hljs-number">09</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>:<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-number&quot;<span class="hljs-operator">&gt;</span><span class="hljs-number">17</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>:<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-number&quot;<span class="hljs-operator">&gt;</span><span class="hljs-number">40.605</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>amp;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>#x27;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">/</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>, 
    title <span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span class<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;=</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>quot;hljs<span class="hljs-operator">-</span>operator<span class="hljs-operator">&amp;</span>quot;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">=</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">/</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span> <span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span class<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;=</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>quot;hljs<span class="hljs-operator">-</span>string<span class="hljs-operator">&amp;</span>quot;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>amp;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>#x27;Título Atualizado<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>amp;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>#x27;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">/</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span> 
<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span class<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;=</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>quot;hljs<span class="hljs-operator">-</span>keyword<span class="hljs-operator">&amp;</span>quot;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-keyword&quot;<span class="hljs-operator">&gt;</span><span class="hljs-keyword">WHERE</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">/</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span> id <span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span class<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;=</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>quot;hljs<span class="hljs-operator">-</span>operator<span class="hljs-operator">&amp;</span>quot;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">=</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">/</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span> <span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span class<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;=</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>quot;hljs<span class="hljs-operator">-</span>number<span class="hljs-operator">&amp;</span>quot;<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-number&quot;<span class="hljs-operator">&gt;</span><span class="hljs-number">1</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>lt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span><span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">/</span><span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>span<span class="hljs-operator">&lt;</span>span class<span class="hljs-operator">=</span>&quot;hljs-operator&quot;<span class="hljs-operator">&gt;</span><span class="hljs-operator">&amp;</span>gt;<span class="hljs-operator">&lt;</span><span class="hljs-operator">/</span>span<span class="hljs-operator">&gt;</span>

Conclusão


Esta abordagem permite reutilizar tanto a estrutura de dados (via @Embeddable) quanto o comportamento (via @EntityListeners). É uma solução limpa que mantém suas entidades de negócio focadas, enquanto a infraestrutura de auditoria funciona silenciosamente nos bastidores.

Publicado por: Guilherme Gomes - 28/04/2026 20:44

← Voltar aos Artigos