entao pode ser 3 coisas?
Entidade com id
entidade nao gerenciada pelo entitymanager
entidade pode ou nao existir no banco de dados.
a entidade pode ou nao existir no banco de dados impossivel, pois nao tem nada la.
a entidade nao gerenciada pelo entitymanager vou postar o meu codigo aqui
model
@Entity public class TemporaryMachineId { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; private int machineId; private int tag;
JPACnfiguration
`@EnableTransactionManagement
public class JPAConfiguration {
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
LocalContainerEntityManagerFactoryBean factoryBean = new LocalContainerEntityManagerFactoryBean();
JpaVendorAdapter jpaVendorAdapter = new HibernateJpaVendorAdapter();
factoryBean.setJpaVendorAdapter(jpaVendorAdapter);
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setUsername("root");
dataSource.setPassword("");
dataSource.setUrl("jdbc:mysql://localhost:3306/testeHibernate");
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
factoryBean.setDataSource(dataSource);
Properties props = new Properties();
props.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect");
props.setProperty("hibernate.show_sql", "true");
props.setProperty("hibernate.hbm2ddl.auto", "update");
factoryBean.setJpaProperties(props);
factoryBean.setPackagesToScan("com.ambra.report.models");
return factoryBean;
}
@Bean
public JpaTransactionManager transactionManager(EntityManagerFactory emf) {
return new JpaTransactionManager(emf);
}
}`
Dao
`@Repository
@Transactional
public class TemporaryMachineIdDao {
@PersistenceContext
private EntityManager manager;
public void gravar(TemporaryMachineId tempMachine){
manager.persist(tempMachine);
}
}`
servlet spring
`public class ServletSpringMvc extends AbstractAnnotationConfigDispatcherServletInitializer{
@Override
protected Class<?>[] getRootConfigClasses() {
// TODO Auto-generated method stub
return null;
}
@Override
protected Class<?>[] getServletConfigClasses() {
// TODO Auto-generated method stub
return new Class[] { AppWebConfiguration.class,JPAConfiguration.class};
}
@Override
protected String[] getServletMappings() {
// TODO Auto-generated method stub
return new String[] {"/"};
}
}`
app web
`@EnableWebMvc
@ComponentScan(basePackageClasses={HomeController.class,RelatorioController.class,TemporaryMachineIdDao.class})
public class AppWebConfiguration extends WebMvcConfigurerAdapter{
<a class="mention" href="/u/bean">@Bean</a>
public InternalResourceViewResolver internalResourceViewResolve() {
InternalResourceViewResolver resolve = new InternalResourceViewResolver();
resolve.setPrefix("/WEB-INF/views/");
resolve.setSuffix(".jsp");
return resolve;
}
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}`
talvez seja onde estou gravando. aqui esta o codigo do controller
` @RequestMapping(value = “/report/relatorio”, method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
public String form(@RequestParam(“id[]”) int id[],
@RequestParam(“dateIni”) @DateTimeFormat(pattern = “dd/MM/yyyy”) Date dateIni,
@RequestParam(“dateFim”) @DateTimeFormat(pattern = “dd/MM/yyyy”) Date dateFim,
@RequestParam(“horaInit”) String horaInit, @RequestParam(“minutoInit”) String minutoInit,
@RequestParam(“horaFim”) String horaFim, @RequestParam(“minutoFim”) String minutoFim) {
Calendar cal = Calendar.getInstance();
Relatorio relatorio = new Relatorio();
relatorio.setTag((int) cal.getTimeInMillis());
relatorio.setMachinesIds(id);
relatorio.setDateIni(dateIni);
relatorio.setDateFim(dateFim);
relatorio.setHoraInit(horaInit);
relatorio.setMinutoInit(minutoInit);
relatorio.setHoraFim(horaFim);
relatorio.setMinutoFim(minutoFim);
System.out.println(relatorio.toString());
for (int i = 0; i < relatorio.getMachinesIds().length; i++) {
TemporaryMachineId tempMachine = new TemporaryMachineId();
tempMachine.setId(relatorio.getMachinesIds()[i]);
tempMachine.setTag(relatorio.getTag());
tempMachineDao.gravar(tempMachine);
}
return "/relatorio/ok";
}`
agora com a entidade com id… nao sei, Precisa ter id? eu coloquei pro hibernate cuidar disso. nao precisaria mandar na hora do insert correto?