quinta-feira, 20 de dezembro de 2012

org.hibernate.AnnotationException: No identifier specified for entity

O problema ocorre porque a chave primária não foi definida!

Errado:
@Entity

@SequenceGenerator(name="SEQ_FIN_CLASSE",sequenceName="SEQ_FIN_CLASSE",allocationSize=1)
public class Classe implements Serializable{

@GeneratedValue(generator="SEQ_FIN_CLASSE",strategy=GenerationType.SEQUENCE)
private Integer id;
private String str_codigoclasse;
private String str_nomeclasse;
}


Certo:
@Entity

@SequenceGenerator(name="SEQ_FIN_CLASSE",sequenceName="SEQ_FIN_CLASSE",allocationSize=1)
public class Classe implements Serializable{

@GeneratedValue(generator="SEQ_FIN_CLASSE",strategy=GenerationType.SEQUENCE)
 @Id
private Integer id;
private String str_codigoclasse;
private String str_nomeclasse;
}


sexta-feira, 9 de novembro de 2012

Hibernate e campos timestamp

Ao pesquisar em um campo timestamp utilizando o criteria, a query não retorna nenhum registro caso as datas sejam iguais, ou não exibe os registro da data final.

Ex:

dataI  = 01/01/2012.
dataF = 01/01/2012.

c.add(Restrictions.between("insert_data", dataI, dataF));

Isso porque, a query está tentando localizar tudo que estiver entre 01/01/2012 00:00 e 01/01/2012 00:00. Porém, na tabela os registros estão armazenados com os horários (01/01/2012 10:15).

Para resolver esse problema, basta acrescentar um dia a data final.
Ex:

dataF.setDate(dataF.getDate() + 1);
c.add(Restrictions.between("insert_data", dataI, dataF));

Agora, a query irá procurar tudo que estiver entre 01/01/2012 00:00 e 02/01/2012 00:00.

quinta-feira, 1 de novembro de 2012

JSF: Inserir caractere em branco (espaço) dentro do h:outputText


<h:outputText value="#{processo.nref}   &#160;" />

quarta-feira, 24 de outubro de 2012

Selecionar último registro no Oracle


SELECT
  FOLLOWUP.POSICAOFLP_ID
FROM
  FOLLOWUP
WHERE
  FOLLOWUP.PROCESSO = '11850'
AND
     FOLLOWUP.ID = (SELECT MAX(FOLLOWUP.ID) FROM FOLLOWUP WHERE FOLLOWUP.PROCESSO = '11850')  

terça-feira, 23 de outubro de 2012

Descobrir qual/se propriedade do bean foi alterada



public class MyBean {
    private Long id;
    private String nome;
    private String campo2;
    public String getCampo2() {
        return campo2;
    }
    public void setCampo2(String campo2) {
        this.campo2 = campo2;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }
}



public class Main {
 
    public static void main(String[] args) {
        MyBean bean1 = new MyBean();
         
        bean1.setId(new Long(1));
        bean1.setNome("MyBean name");
        bean1.setCampo2("MyBean campo2");
         
        MyBean bean2 = new MyBean();
         
        bean2.setId(new Long(1));
        bean2.setNome("MyBean nam2e");
        bean2.setCampo2("MyBean campo2");
 
        Field f[] = bean1.getClass().getDeclaredFields();
         
        for (int i = 0; i < f.length; i++) {
            Field field = f[i];
             
            BeanComparator bc = new BeanComparator(field.getName());
            int result = bc.compare(bean1, bean2);
             
            System.out.println("["+field.getName()+"]: "+result);
             
        }
    }

Se o resultado for diferente de 0, as propriedades são diferentes, com isso, sei quais campos foram alterados.

Fonte: http://javafree.uol.com.br/topic-11702-Descobrir-qual-propriedade-do-bean-foi-alterada.html

quinta-feira, 18 de outubro de 2012

Função SKIP Firebird

A função SKIP permite ignorar/saltar N registros para sem seguida retornar o restante.

Em conjunto com a função FIRST é possível ignorar N registros e retornar N registos. Ex: Ignorar os cinco primeiros registros e exibir os dois registros após os cinco ignorados.

Retorna apenas o primeiro usuário:

   SELECT FIRST 1
     nome
   FROM
     usuario
   ORDER BY
     nome

Retorna apenas o segundo usuário:

   SELECT FIRST 1 SKIP 1
     nome
   FROM
     usuario
   ORDER BY
     nome

Ignora os 5 primeiros usuários e retorna o restante:

   SELECT SKIP 5
     nome
   FROM
     usuario
   ORDER BY
     nome

quarta-feira, 26 de setembro de 2012

Efetuando cálculos de porcentagem em Java

Efetuando cálculos de porcentagem em Java

Cálculos de porcentagens estão presentes em boa parte das aplicações que desenvolvemos. Porém, há momentos em que a mente trava e não conseguimos lembrar com clareza como estes cálculos são feitos, principalmente em Java.

Esta anotação tem o objetivo de ser uma fonte de pesquisa para os momentos em que suas habilidades matemáticas insistirem em continuar ocultas.

Ex: 1 - Suponhamos que um produto que custe R$ 178,00 sofra um acréscimo de 15%. Qual o valor final do produto? Veja o código em Java:
public class Estudos{
  public static void main(String args[]){
    double valor = 178.00; // valor original
    double percentual = 15.0 / 100.0; // 15%
    double valor_final = valor + (percentual * valor);

    System.out.println("O valor final do produto é: " +
      valor_final);   

    // O resultado será 204,70

    System.exit(0);
  }
} 
Ex: 2 - Um produto, cujo valor original era de R$ 250,00, teve um desconto de 8%. Qual foi seu valor final? Veja o código em Java:
public class Estudos{
  public static void main(String args[]){
    double valor = 250.00; // valor original
    double percentual = 8.0 / 100.0; // 8%
    double valor_final = valor - (percentual * valor);

    System.out.println("O valor final do produto é: " +
      valor_final);   

    // O resultado será 230,00

    System.exit(0);
  }
} 

Ex: 3 - Em um concurso de perguntas e respostas, um jovem acertou 72 das 90 perguntas apresentadas. Qual foi a porcentagem de acertos? E a porcentagem de erros? Veja o código em Java:
public class Estudos{
  public static void main(String args[]){
    double perguntas = 90.0;
    double acertos = 72.0;

    System.out.println("Porcentagem de acertos: " +
      ((acertos / perguntas) * 100) + "%");

    System.out.println("Porcentagem de erros: " +
      (((perguntas - acertos) / perguntas) * 100) + "%");   

    // Os resultados serão 80% e 20%

    System.exit(0);
  }
}

Ex: 4 - Um aparelho de CD foi adquirido por R$ 300,00 e revendido por R$ 240,00. Qual foi a porcentagem de lucro na transação? Veja o código em Java:
public class Estudos{
  public static void main(String args[]){
    double v_ant = 300.0; // valor anterior
    double v_nov = 340.0; // valor novo
    double p_lucro = 0.0; // porcentagem de lucro

    while(v_ant + ((p_lucro / 100.0) * v_ant) < v_nov){
      p_lucro = p_lucro + 0.1;
    } 

    System.out.println("A porcentagem de lucro foi de: " +
      p_lucro + "%");   

    // O resultado será 13,39

    System.exit(0);
  }
} 

Ex: 5 - Uma loja repassa 5% do lucro a seus vendedores. Se um produto custa R$ 70,00, qual o valor em reais repassado a um determinado vendedor? Veja o código em Java:
public class Estudos{
  public static void main(String args[]){
    double valor = 70.0; // valor do produto
    double porcent = 5.0 / 100.0; // 5%  

    double comissao = porcent * valor;

    System.out.println("O valor repassado ao vendedor e: " +
      comissao); 

    // O resultado será 3,5

    System.exit(0);
  }
}

Fonte: http://www.arquivodecodigos.net/dicas/java-efetuando-calculos-de-porcentagem-em-java-1221.html