Hibernate – Monitorando atualizações de entidades

19 04 2017

Problema

Preciso monitorar cada atualização da entidade para tentar descobrir a causa de um relacionada ao versionamento da entidade

Solução

Utilizar o Listner do hibernate

Como?

Escrever um Listener

public class DocumentoListener {

    private static final Logger LOGGER = LoggerFactory.getLogger(DocumentoListener.class);

    @PostUpdate
    public void documentoPrePersist(Documento entidade) {
        logarAlteracao(entidade);
    }

    private void logarAlteracao(Documento entity) {
        String informacoesDocumento = buscarInformacoesDoDocumento(entity);
        if (LOGGER.isDebugEnabled()) {
            LOGGER.debug("[PostUpdate] Documento atualizado no BD " + informacoesDocumento + getStackTraceComString());
        }
    }

Anotar a entidade que será monitorada

@EntityListeners(DocumentoListener.class)
@Entity
@Table(name = "DOCUMENTO")
public class Documento extends AbstractBusinessEntity {

Configurar o persistence.xml

<property name="org.hibernate.envers.revision_field_name" value="id_revision" />
			<property name="org.hibernate.envers.revision_type_field_name" value="tp_revision" />
			<property name="hibernate.ejb.event.post-insert" value="org.hibernate.ejb.event.EJB3PostInsertEventListener, org.hibernate.envers.event.AuditEventListener" />
			<property name="hibernate.ejb.event.post-update" value="org.hibernate.ejb.event.EJB3PostUpdateEventListener, org.hibernate.envers.event.AuditEventListener" />
			<property name="hibernate.ejb.event.post-delete" value="org.hibernate.ejb.event.EJB3PostDeleteEventListener, org.hibernate.envers.event.AuditEventListener" />
			<property name="hibernate.ejb.event.pre-collection-update" value="org.hibernate.envers.event.AuditEventListener" />
			<property name="hibernate.ejb.event.pre-collection-remove" value="org.hibernate.envers.event.AuditEventListener" />
			<property name="hibernate.ejb.event.post-collection-recreate" value="org.hibernate.envers.event.AuditEventListener" />

 

Links: LINK1, LINK2 e LINK3

Anúncios




InteliJ-Converter\Visualizar automaticamente ascii em arquivos properties de i18n

11 01 2017

Problema

Gostaria de visualizar a conversão de ascii automaticamente na visualização de arquivos internacionalizados/i18n

Solução

Existe uma propriedade que pode ser habilitada no inteliJ chamada Transparent native-to-ascii conversion

File->Settings->Editor->File Encodings -> Marcar opção Transparent native-to-ascii conversion

Depois de aplicar já é possível visualizar os arquivos convertidos automaticamente

Fonte





InteliJ – Click duplo não seleciona a palavra inteira

27 10 2016

Problema

Ao realizar o click duplo na palavra a mesma não é selecionada por completo.

Exemplo: pedidoService (seleciona só o pedido e não o Service)

Solução

descobri que é uma configuração de seleção camelcase, que pode ser desativada

Settings -> Editor -> General -> Smart Keys -> Use “CamelHumps”

FONTE





Liquibase– Como rodar o liquibase em uma única linha de comando de maneira rápida

26 10 2016

Problema

Gostaria de rodar liquibase em uma unica linha de comando, evitando muitas configurações

Solução


mvn liquibase:update -Dliquibase.contexts=desenv -Dliquibase.jdbc.url=jdbc:jtds:sqlserver://10.2.8.16:1040/base_dados -Dliquibase.dropFirst=false -Dliquibase.username=usuario_base-Dliquibase.password=senha_usuario





Java – Como escrever um arquivo com ISO-8859-1 utilizando FileWriter

18 10 2016

Problema

Preciso escrever um arquivo com um determinado encoding utilizando FileWriter

Solução

OutputStreamWriter osw = null;
try {
   osw = new OutputStreamWriter(
			new FileOutputStream(localFilename),
			Charset.forName("ISO-8859-1").newEncoder()
	);
   osw.write(content, 0, content.length());
} finally {
	if (osw != null) osw.close();
}




JBoss Seam – Scan de componentes não funciona para um jar externo

18 10 2016

Problema

  • Criei um novo projeto com JBoss Seam como um modulo de outro projeto principal
  • Adicionei no maven do projeto principal o meu novo modulo
  • PROBLEMA: No projeto principal não consigo instanciar os serviços/componentes do projeto  modulo

Causa

A causa desse problema é que para o seam identificar que deve scanear um jar, deve possuir no classpath o arquivo seam.properties

Solução

Colocar no resources do projeto modulo um arquivo em branco seam.properties, como isso os componentes serão scaneados para utilização no projeto principal 😉

src/main/resources/seam.properties





IteliJ- Configurando click para navegar para implementações de métodos

14 09 2016

Problema

Utilizando a IDE InteliJ ao clicar no método da interface gostaria de navegar até a implementação e não a interface.

Solução

Criar um dialog para mostrar as opções de implementações etc..

Como?

  1. Abrir Setting-> Appearance & Behavior -> Quick List
  2. Clicar no botão + do lado esquerdo da tela para inserir um novo Quick List
  3. Informar um nome para a Quick List ex: “Implementações e hierarquias Dialog”
  4. Clicar no botão + do lado direito da tela para inserir uma opção que será exibida no Quick List
  5. Adicionar Main Menu -> Navigate -> Implemententions
  6. Clicar em Apply
  7. Abrir Setting-> Keymap
  8. Sobre a opção Click List que você criou ex: “Implementações e hierarquias Dialog” associar um atalho ex: Ctrl + Botão do meio no mouse

 

FONTE