[RESOLVIDO] Gerar código automático + data atual?

Segue uma imagem para entender melhor

  • Estou precisando colocar um código automático como matrícula para o funcionário independente do ID. Pesquisei mas só achei para gerar o ID. Como faço para ter dois código sequencial independentes?

  • E a outra dúvida é como faço para já preencher o campo data com a data atual?

Antes de responder, por que o id sequencial não serve? Ele não é único?
Sobre inserir a data automaticamente, depende do que você usa como front…

Olá

O caso do código já consegui resolver, consegui colocar Multi sequencia no Hibernate.

O caso da data não entendi o sobre o front que estou usando, sou iniciante no java web

Está usando html, jsf, jsp ou o que?

estou usando xhtml / jsf / primefaces

Se houve solução ao seu problema, poste para que os outros utilizem como referencia, é sempre bom compartilha as soluções dos tópicos abertos.

Ok.
Você conhece de javascript?
Se sim, você pode usar javascript para definir valores em campos html (no final, tudo o que você programa no xhtml vira html).
Para isso, você vai precisar definir um id para o form e outro para o campo em questão. Assim que definir, você terá de criar um script javascript que insira a data atual no campo em questão.

Isso eu tentei… coloquei o mesmo script que utilizo em PHP e não funcionou em parte.

Só aparece a data se eu colocar o ID do campo p:inputText mas se colocar o ID do p:calendar não aparece nada.

Mostre-me como fez.

Código do script… funciona tranquilo no PHP

"function fnData() {

var dt = new Date();

var dia = dt.getDate();
var mes = dt.getMonth() + 1;
var ano = dt.getFullYear();

var data = ((dia < 10) ? "0" : "") + dia + "/" + ((mes < 10) ? "0" : "") + mes + "/" + ano;

return data;

}//função data"

Para criar outro código sequencial. Coloquei o campo como SERIAL no PostgreSQL ele gera uma arquivo de sequencia, ai no código coloquei assim.

@Column(
name=“codigo”,
nullable=false,
unique=true,
insertable = false,
updatable = false,
columnDefinition = “BIGINT DEFAULT nextval(‘funcionarios_codigo_seq’)” )
private Integer codigo;”

se você está usando primefaces e JSF pode fazer da seguinte forma:

 <p:calendar id="data" value="#{funcionariosBean.data}" />

e no seu MAnagedBean colocar no construtor da classe assim:

@ManagedBean
public class FuncionariosBean{
         
    private Date data;

  // ( gets e sets)

  public FuncionariosBean() {
     data = new Date();
} 

Assim ele pega a data e hora local do computador/servidor.

Icarometal, mas esse código vai funcionar no hora de salvar e edição dos dados? E isso serve pra qualquer campo que queira colocar valor padrão

como assim? não entendi a pergunta.

Sim, e não. Serve pra qualquer campo que você queira que já venha com um valor, mas no caso da data a classe Date te retorna a data atual quando você instancia um objeto deste tipo.

outras classes, você tem que colocar este valor padrão. como por exemplo, se vc tiver uma String que quer que venha sempre com o mesmo valor quando a tela se abrir, você coloca assim:

variavelString = "string padrão";

Se for um inteiro:

variavelInteiro = new Integer(25); // valor que vc quiser...

Não funcionou do jeito que você falou, mas consegui resolver colocando no arquivo Domain do Funcionarios assim

public Date getData() {
	
	if (data == null){
		Calendar dataatual = Calendar.getInstance();
		data = dataatual.getTime();
	}
	
	return data;
}
1 curtida

Estranho… deveria funcionar. Mas enfim que bom que encontrou uma solução para o caso.

De toda forma, tente mais tarde passar isso para o construtor da classe, torna seu código mais limpo… lógicas dentro de gets podem tornar a manutenção do código chata depois.

o construtor da classe, deve servir para inicialização de variáveis, e coisas do gênero.

abraço.