Oi pessoas, temnho esse problema aqui no netbeans, com aplicação javafx, no qual, quando vou fazer a persistencia de um objeto, usanodo Hibernate, se a lista fica vazia, ele opera normalmente, mas depois da primeira, ele retorna o seguinte erro:
ERROR: Duplicate entry ‘0’ for key ‘PRIMARY’
org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl release
INFO: HHH000010: On release of batch it still contained JDBC statements
THE ERROE IS ===>>>org.hibernate.exception.ConstraintViolationException: could not execute statement.
Como faco pra lidar com isso, parece que na parte de cadastro, ele sempre tenta começãr com id 0, mas não persiste porque já tem uma linha com id 0 no b. de dados, só não sei como resolver isso, Tem alguma coisa que possa fazer?
eis aqui o código:
public class Conectar {
public static SessionFactory Conexao() {
Configuration c = new Configuration();
c.configure();
SchemaExport sql = new SchemaExport©;
sql.create(true,false);
ServiceRegistry sr = new StandardServiceRegistryBuilder().applySettings(c.getProperties()).build();
return c.buildSessionFactory(sr);
}
public class AdicaoController implements Initializable {
/atributos omitidos/
@FXML
private void criarEvento(ActionEvent event) {
try{
AgendaFactory ag = new AgendaFactory();
Evento e = null;
TempoFactory tf = new TempoFactory();
Futuros f = ag.Futuro();
LocalDate lc = calendar.getValue();
Tempo t;
EventosDao hibernate = new EventosDao();
String mylocal = local.getText();
String myname = nome.getText();
String mydescricao = descricao.getText();
int dia = lc.getDayOfMonth();//Dia em que comeca
int mes = lc.getMonthValue();//Mes
int ano = lc.getYear();//Ano
int hcomeco = horaInicial.getValue();//Hora em que come�a
int mcomeco = mimInicial.getValue();//minuto em que come�a
int hfim = horaFinal.getValue();//Hora em que termina
int mfim = minFinal.getValue();//minuto em que termina
t = tf.criartempo(dia, mes, ano, hcomeco, mcomeco, mfim, mfim);
//Aqui um tempo no construtor factory os atributos pedidos;
e = new Evento.BuilderEvento().setTempo(t).setNome(myname).
setLocal(mylocal).setDescricao(mydescricao).Builder();//EventoBuilder � criado
(f.adicionar(e))
if(hibernate.create(e)){
ultimo.setText("SLAVO NO mYSQL");
}
}catch(Exception e){
ultimo.setText("coisa errada");
}
}
@Entity
@Table(name = “Eventos”)
public class Evento implements Serializable{
@Id
private long id;
@GeneratedValue(strategy = GenerationType.SEQUENCE )
/atributos omitidos/
@ManyToOne
private Agenda agendados;
@OneToOne(cascade = CascadeType.ALL,
fetch = FetchType.LAZY,mappedBy = “fazerHoje”)
Entity
@Table(name = “tempodasCoisas”)
public class Tempo implements Serializable {
// @Embeddablle
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
/atributos omitidos/
@OneToOne(cascade = CascadeType.ALL)
private Evento fazerHoje;