Spring data jpa guardar no se puede obtener la id

Mi id de la entidad se genera, y estaba funcionando bien cuando puedo utilizar DAO en lugar de Spring data JPA.

@Id
@Column(name = TABLE_COLUM_NAME_ID)
@GeneratedValue
private int id;

Ahora he de empezar a utilizar Spring data JPA, y después de que me llame repository.save(myboject), o repository.saveAndFlush(myobject), que yo llamo myobject.getId(). Pero el id es nunca pobladas.

Busqué en mi base de datos y el objeto está en la base de datos y la identificación es correcta.
¿Alguien sabe por qué el id no se establece después de haber llamado a save()? Yo no tengo ningún problema cuando uso entitymanager.save().

InformationsquelleAutor Grey | 2013-05-03

6 Kommentare

  1. 11

    Tratar esto como

    myboject = repository.save(myboject);
    repository.flush();

    A continuación, después de la llamada a getId();

    • El problema es MyEntity requestEntity; savedEntity = repositroy.guardar(requestEntity). Id no está en requestEntity pero en savedEntity
    • No funciona con PagingAndSortingRepository
    • Por favor, no dan respuestas como probar esto… añadir una explicación correcta de responder cada vez que sea necesario.
  2. 7
    1. Debe utilizar el repository.saveAndFlush(); método:

    MyObject savedObject= repository.saveAndFlush(newObject);

    1. En la Entidad objeto de la descripción, se debe añadir el atributo siguiente(@GeneratedValue(strategy = GenerationType.AUTO)) para el campo relacionado(id):
    @Id   
    @Column(name = "id")   
    @GeneratedValue(strategy = GenerationType.AUTO)   
    public long getId() {  
        return id;  
    }
    • esto funcionó para mí, gracias, faltaba el generateValue anotación
  3. 3

    Este método devuelve la guarda id

    myobject = repository.saveAndFlush(myobject);

    Ahora usted tiene su id.

  4. 0

    Finalmente lo entendí. Aunque el método save es nula, se puede establecer una variable a ella.(?)

        @PostMapping(value = "customer/{id}/wish/add")
    public String processAddWish(Model model, @PathVariable int id,
                                 @ModelAttribute @Valid WishOrder newWishOrder,
                                 Errors errors) {
        if (errors.hasErrors()) {
            return "customer/wish/add";
        }
        //Initialize variable to the save method, even though it is void and returns nothing//
        //Eliminates need to access object through a .findById//
        //If you need the id of the saved object instantly, just add .getId to save call//
        //wishOrderDao.save(newWishOrder).getId()//
        WishOrder wish = wishOrderDao.save(newWishOrder);
        Customer customer = customerDao.findById(id);
        customer.getWishList().add(wish);
        customerDao.save(customer);
    
        model.addAttribute("customer",(customer));
        model.addAttribute("wishList", (customer.getWishList()));
    
        return "customer/wishList";
    }

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea