Problems when inserting in a second database (two schema mysql) Spring Boot

3

I have a problem when trying to insert, modify or delete a record (by requesting post, put and delete) in a second database. In the application I have two datasource defined for two schemas in a Mysql database.

The problem is that in the first database the system does the operations of the crud. However in the second database the system only makes get requests but does not insert, modify or delete in that database. I'm confused because the console does not show any errors when the url is consumed.

For now I share the code where I define the two datasource.

Datasource that works (first schema users)

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackageClasses = UsuarioRepositorio.class, entityManagerFactoryRef = "usuarioDSFactory", transactionManagerRef=  "usuarioDSTransaction")
public class UsuarioDBConfiguracion2 {

@Primary
@Bean
@ConfigurationProperties("spring.datasource1")
public DataSourceProperties usuarioDSProperties(){
    return new DataSourceProperties();
}

@Primary
@Bean
public DataSource usuarioDS(@Qualifier("usuarioDSProperties") DataSourceProperties usuarioDSProperties) {
    return usuarioDSProperties.initializeDataSourceBuilder().build();
}

@Primary
@Bean
public LocalContainerEntityManagerFactoryBean usuarioDSFactory(@Qualifier("usuarioDS") DataSource usuarioDS, EntityManagerFactoryBuilder builder) {
    return builder.dataSource(usuarioDS).packages(Usuario.class).build();

}

@Primary
@Bean
public PlatformTransactionManager usuarioDSTransaction(EntityManagerFactory usuarioDSFactory) {
    return new JpaTransactionManager(usuarioDSFactory);
}
}

Datasource that does not work (second schema citizens)

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(basePackageClasses = CiudadanoRepositorio.class, 
entityManagerFactoryRef = "ciudadanoDSFactory", transactionManagerRef = 
"ciudadanoDSTransaction")
public class CiudadanoDBConfiguracion {
@Bean
@ConfigurationProperties("spring.datasource2")
public DataSourceProperties ciudadanoDSProperties() {
    return new DataSourceProperties();
}

@Bean
public DataSource ciudadanoDS(@Qualifier("ciudadanoDSProperties") DataSourceProperties ciudadanoDSProperties) {
    return ciudadanoDSProperties.initializeDataSourceBuilder().build();
}

@Bean
public LocalContainerEntityManagerFactoryBean ciudadanoDSFactory(@Qualifier("ciudadanoDS") DataSource ciudadanoDS,
        EntityManagerFactoryBuilder builder) {
    return builder.dataSource(ciudadanoDS).packages(Ciudadano.class).build();

}

@Bean
public PlatformTransactionManager ciudadanoDSTransaction(EntityManagerFactory ciudadanoDSFactory) {
    return new JpaTransactionManager(ciudadanoDSFactory);

}
}

The citizen repository (the datasource that does not work, does not perform post, delete or put but if you get)

@Repository
public interface CiudadanoRepositorio extends CrudRepository<Ciudadano, Integer>{
public Ciudadano findByCedula(int cedula);
}

Citizen driver

@RestController
@RequestMapping("/proyecto")
public class CiudadanoControlador {

@Autowired
private CiudadanoRepositorio repositorio;

@GetMapping("/ciudadanos/obtener/todos")
public List<Ciudadano> obtenerTodosLosCiudadanos(){
    List<Ciudadano> ciudadanos = new ArrayList<>();
    repositorio.findAll().forEach(ciudadanos::add);
    return ciudadanos;
}

@PostMapping("/ciudadanos/crear")
public Ciudadano crearCiudadano(@RequestBody Ciudadano ciudadano) {
    Ciudadano ciudadano2 = repositorio.save(new Ciudadano(ciudadano.getCedula(),
            ciudadano.getNombres(),
            ciudadano.getApellidos(),
            ciudadano.getFecha_de_nacimiento(),
            ciudadano.getLugar_de_nacimiento(),
            ciudadano.getFecha_de_expedicion(),
            ciudadano.getLugar_de_expedicion(),
            ciudadano.getRh(),
            ciudadano.getGrupo_sanguineo(),
            ciudadano.getEstatura(),
            ciudadano.getRequerido()));
    return ciudadano2;
}

@DeleteMapping("/cuidadanos/eliminar/{cedula}")
public ResponseEntity<String> eliminarCiudadano(@PathVariable("cedula") int cedula){
    repositorio.deleteById(cedula);
    return new ResponseEntity<String>("El usuario " + cedula + " fue eliminado.", HttpStatus.OK);
}

@DeleteMapping("/ciudadanos/eliminar/todos")
public ResponseEntity<String> eliminarTodosLosCiudadanos(){
    repositorio.deleteAll();
    return new ResponseEntity<String>("Todos los usuarios fueron eliminados.", HttpStatus.OK);
}

@PutMapping("/ciudadanos/actualizar/{cedula}")
public ResponseEntity<Ciudadano> actualizarCiudadano(@PathVariable("cedula") int cedula, @RequestBody Ciudadano ciudadano){
    Optional<Ciudadano> ciudadanoData = repositorio.findById(cedula);

    if(ciudadanoData.isPresent()) {
        Ciudadano ciudadano2 = ciudadanoData.get();
        ciudadano2.setNombres(ciudadano.getNombres());
        ciudadano2.setApellidos(ciudadano.getApellidos());
        ciudadano2.setFecha_de_expedicion(ciudadano.getFecha_de_nacimiento());
        ciudadano2.setLugar_de_expedicion(ciudadano.getLugar_de_nacimiento());
        ciudadano2.setFecha_de_nacimiento(ciudadano.getFecha_de_expedicion());
        ciudadano2.setLugar_de_nacimiento(ciudadano.getLugar_de_expedicion());
        ciudadano2.setRh(ciudadano.getRh());
        ciudadano2.setGrupo_sanguineo(ciudadano.getGrupo_sanguineo());
        ciudadano2.setEstatura(ciudadano.getEstatura());
        ciudadano2.setRequerido(ciudadano.getRequerido());
        return new ResponseEntity<>(repositorio.save(ciudadano2), HttpStatus.OK);
    } else {
        return new ResponseEntity<>(HttpStatus.NOT_FOUND);
    }
}

In console it does not show any error. For example, when I request a post by postman to create a user through the user's controller, the application inserts in the database:

However when I make the same application for citizens the application shows the following but does not insert.

I enclose the configuration file

    
asked by mb0 19.11.2018 в 06:47
source

0 answers