Possuo uma classe Fabricante que é persistido e cadastro um Carro referente aquele Fabricante, e está tudo OK. Vejo que se cadastrar um Fabricante vou ter problema devido a duplicação de Objeto. Como eu faço para que quando eu for salvar um Objeto já possa ser verificado se existe.
OBS: De preferência ignorando maiuscula e minuscula porque é Case Sensitive.
Segue meu codigo.
Modelo
public class Fabricante implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long codigo;
@NotNull
@NotBlank
@Size(max= 30,min = 4) //tamanho de caractere
@Column(nullable = false, length=30) //coluna não pode ser null e o tamanho da coluna é 20
private String nome;
DAO
public class FabricanteDAO implements Serializable {
private static final long serialVersionUID = 1L;
@Inject
private EntityManager manager;
@Transactional
public void salvar(Fabricante fabricante) {
manager.merge(fabricante);
}
Service
public class FabricanteService implements Serializable {
private static final long serialVersionUID = 1L;
@Inject
private FabricanteDAO fabricanteDAO;
public void salvar(Fabricante fabricante) throws NegocioException {
try {
this.fabricanteDAO.salvar(fabricante);
} catch (Exception e) {
throw new NegocioException("Não foi possível salvar o Fabricante");
}
}
Controller
@Named
@ViewScoped
public class CadastroFabricanteBean implements Serializable {
private static final long serialVersionUID = 1L;
@Inject
private FabricanteService cadastroFabricanteService;
@Getter
@Setter
private Fabricante fabricante;
public void inicializar() {
System.out.println("iniciando Fabricante..");
if (this.fabricante == null) {
limpar();
}
}
public void salvar()throws NegocioException {
try {
this.cadastroFabricanteService.salvar(fabricante);
Messages.addGlobalInfo("Fabricante salvo com sucesso!");
limpar();
} catch (NegocioException e) {
Messages.addGlobalError(e.getMessage());
}
}