Ultimamente tenho reparado que o hibernate tem apresentado problemas. Eu criei uma sequencia de insert’s para teste. Sempre que testo, derrubo e levanto o Tomcat, usando a configuração create-drop do hibernate (limpando e criando as tabelas novamente).
Na maioria das vezes, essa sequencia de insert apresenta sucesso. Porém, acredito que nos outros 40% o hibernate faz simplesmente um duplo insert em um mesmo campo, nessa minha lista de insert’s. Estou utilizando o spring gerenciar as transações. Mas acredito que este não seja o problema.
Alguém já passou por esse tipo de problema?
Employee employee = new Employee();
employee.setCpf("[telefone removido]");
Calendar calendar = new GregorianCalendar();
calendar.set(1947, 7, 27);
employee.setDateOfBirth(calendar);
employee.setGenre("M");
employee.setFirstName("Thiago");
employee.setLastName("Sales");
entityManager.persist(employee);
UserPassword userPassword = new UserPassword();
userPassword.setEmployee(employee);
BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
String password = bCryptPasswordEncoder.encode("123");
userPassword.setPassword(password);
userPassword.setUsername("ts");
Role role = new Role();
role.setName(TypeUser.ROLE_ADMIN);
userPassword.setRoles(new ArrayList<Role>(Arrays.asList(role)));
entityManager.persist(userPassword);
Product product = new Product();
product.setEmployee(employee);
product.setName("cs");
product.setDescription("Peça de marfim");
entityManager.persist(product);
Product product2 = new Product();
product2.setEmployee(employee);
product2.setName("ce");
product2.setDescription("Peça de bronze");
entityManager.persist(product2);
Product product3 = new Product();
product3.setEmployee(employee);
product3.setName("co");
product3.setDescription("Peça de ouro");
entityManager.merge(product3);
Product product4 = new Product();
product4.setEmployee(employee);
product4.setName("ca");
product4.setDescription("Peça de prata");
entityManager.persist(product4);
Agreement agreement = new Agreement();
agreement.setName("SCC");
entityManager.persist(agreement);
Plan plan = new Plan();
plan.setBaseValue(new BigDecimal(22.23));
plan.setCreationDate(Calendar.getInstance());
plan.setDescription("pouca coisa");
plan.setEmployee(employee);
plan.setName("bronze");
plan.setActive(true);
List<Product> products = new ArrayList<Product>();
products.add(product);
products.add(product2);
plan.setProducts(products);
entityManager.persist(plan);
Plan plan2 = new Plan();
plan2.setBaseValue(new BigDecimal(22.23));
plan2.setCreationDate(Calendar.getInstance());
plan2.setDescription("Muita coisa coisa");
plan2.setEmployee(employee);
plan2.setName("prata");
plan2.setActive(true);
List<Product> products2 = new ArrayList<Product>();
products2.add(product);
products2.add(product2);
plan2.setProducts(products2);
entityManager.persist(plan2);
Branch branch = new Branch();
branch.setAgreement(agreement);
branch.setName("SCC");
entityManager.persist(branch);
AgreementPlan agreementPlan = new AgreementPlan();
agreementPlan.setPlan(plan);
agreementPlan.setAgreement(agreement);
entityManager.persist(agreementPlan);
AgreementPlan agreementPlan2 = new AgreementPlan();
agreementPlan2.setPlan(plan2);
agreementPlan2.setAgreement(agreement);
entityManager.persist(agreementPlan2);