daew galera, estou com um problema para utilizar o sequence generator, tenho as sequence definidas no bd, porem não consigo fazer o hibernate utiliza-las
Estado.java
[code]@Entity
@Table(name="“Estados”")
public class Estados implements Serializable {
@Id
@Column(name="est_codigo")
@SequenceGenerator(name="Estado_Seq", sequenceName="Estado_est_codigo_seq", allocationSize=1)
@GeneratedValue(strategy=GenerationType.AUTO, generator="Estado_Seq")
private int estCodigo;
@Column(name="est_nome")
private String estNome;
@Column(name="est_abreviatura")
private String estAbreviatura;
[/code]
Metodo onde esta sendo inserido um novo estado no BD
[code]public static void main(String[] args) {
EstadosService estService = new EstadosService();
Estados est = new Estados();
est.setEstCodigo(1);
est.setEstNome("Rio Grande do Sul");
est.setEstAbreviatura("RS");
estService.insert(est);
}[/code]
EstadosService.java
[code]public class EstadosService extends ServiceImplements<Estados> {
public EstadosService() {
super(Estados.class);
}
}[/code]
Metodo insert do arquivo ServiceImplements
public T insert(T obj) {
initTransaction();
try {
entityManager.persist(obj);
commitTransaction();
} catch (Exception e) {
logger.error("Erro ao inserir objeto:", e);
rollbackTransaction();
}
return null;
}
Se as linhas @SequenceGenerator e @GeneratedValue do Estado.java ficam comentadas e passo um codigo diferente a cada inserção funciona normalmente, porem com o hibernate controlando a geração dos codigos não funciona
abraços
Cara,
Aqui onde trabalho, temos a seguinte classe:
[code]
@Entity
@Table(name = “pessoa”, schema = “public”)
@SequenceGenerator(name=“PESSOA_SEQ”, sequenceName=“pessoa_id_pessoa_seq”, allocationSize=1)
public class Pessoa implements java.io.Serializable {
private static final long serialVersionUID = 2009100211L;
private Integer idPessoa;
@Id
@Column(name = "id_pessoa", unique = true, nullable = false, length = 14)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="PESSOA_SEQ")
public Integer getIdPessoa() {
return this.idPessoa;
}
}[/code]
Acho q está faltando a seguinte anotação na sua classe:
@SequenceGenerator(name=“Estado_Seq”, sequenceName=“xxx”, allocationSize=1)
Dê uma verificada nisso.
[]'s
A anotação @sequencegenerator esta ali, porem acima do atributo, vou coloca-lo acima da classe, vai que seja a localização, depois posto o result
vlw pela dica
[]'s
Não deu certo brother … não retorna erro e nem grava no banco, a unica coisa q retorna é
[quote]log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.[/quote]
segue Estado.java
[code]@Entity
@Table(name="“Estados”")
@SequenceGenerator(name=“Estado_Seq”, sequenceName=“Estado_est_codigo_seq”, allocationSize=1)
public class Estados implements Serializable {
@Id
@Column(name="est_codigo")
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="Estado_Seq")
private int estCodigo;
@Column(name="est_nome")
private String estNome;
@Column(name="est_abreviatura")
private String estAbreviatura;[/code]
[]'s
Resolvido, apenas troquei o tipo de strategy na anotação @GeneratedValue, de AUTO e SEQUENCE que havia utilizado para IDENTITY, ficando assim a classe Estado.Java
[code]@Entity
@Table(name="“Estados”")
@SequenceGenerator(name=“Estado_Seq”, sequenceName=“Estado_est_codigo_seq”, allocationSize=1)
public class Estados implements Serializable {
@Id
@Column(name="est_codigo")
@GeneratedValue(strategy=GenerationType.IDENTITY, generator="Estado_Seq")
private int estCodigo;
@Column(name="est_nome")
private String estNome;
@Column(name="est_abreviatura")
private String estAbreviatura;[/code]
mesmo assim vlw pela ajuda