Ho un'entità semplice. Sto usando spring-data-jpa versione 1.2.0.RELEASE e eclipselink 2.4.1.Perché l'ID non è impostato nell'entità restituita da spring-data-jpa save
@Entity
@Table(name="platform")
public class Platform {
@Id
@Column(name="id", nullable=false, updatable=false, insertable=true)
private Long id;
// etc.
}
Voglio salvarlo. Il mio repository sembra
public interface PlatformRepository extends JpaRepository<Platform, Long> {
Platform findByName(String name);
}
mio controller è molto semplice con questo metodo
@RequestMapping(method=RequestMethod.POST, produces="application/json")
public Platform post(Platform platform) {
Platform result = platformDao.saveAndFlush(platform);
return result;
}
E la risposta da quel metodo è
{"platform":{"id":null,"name":"Test1"}}
Select * from piattaforma dimostra che Test1 ha un ID di 6. La tabella è definita come:
create table platform(
id int not null auto_increment primary key,
name varchar(128) not null);
Mi aspetto che l'ID venga impostato dopo il salvataggio, ma non lo è. Non si aspettano che faccia una ricerca subito dopo aver scritto l'entità, giusto?
Solo un'ipotesi: prova a cambiare 'id' da' Long' a 'int' e' insertable = true' a 'false'. Inoltre, [* questo *] (http://stackoverflow.com/questions/12122489/jparepository-transaction-and-repository-saveandflush) potrebbe essere rilevante. – alfasin