Я использую данные Spring JPA, hibernate, sqlserver в приложении Spring Rest.Объект спящего режима обновляет существующую строку вместо создания новой строки с помощью saveAndFlush
i) Для первого запроса запись вставляется в базу данных. работая до этого.
II), когда я сделать еще один новый запрос с новыми данными обновления существующей записи вместо вставки новой записи в базу данных
III) Но когда контекст приложения перезагружается я могу вставить новую запись.
Ниже приведен фрагмент кода.
1) Hibernate конфигурации
public class HibernateConfiguration {
@Autowired
private Environment env;
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(env.getRequiredProperty
("db.driverClassName"));
dataSource.setUrl(env.getRequiredProperty("db.url"));
dataSource.setUsername(env.getRequiredProperty("db.username"));
dataSource.setPassword(env.getRequiredProperty("db.password"));
return dataSource;
}
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource dataSource) {
LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
entityManagerFactoryBean.setDataSource(dataSource);
entityManagerFactoryBean.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
entityManagerFactoryBean.setPackagesToScan(new String[] { my.domains.package });
entityManagerFactoryBean.setJpaProperties(hibProperties());
return entityManagerFactoryBean;
}
private Properties hibProperties() {
Properties properties = new Properties();
properties.put("hibernate.dialect", env.getRequiredProperty("hibernate.dialect"));
properties.put("hibernate.show_sql", env.getRequiredProperty("hibernate.show_sql"));
properties.put("hibernate.hbm2ddl.auto", env.getRequiredProperty("hibernate.hbm2ddl.auto"));
return properties;
}
@Bean
public JpaTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(entityManagerFactory);
return transactionManager;
}
2) домен
@Entity
@Table(name="Emp_Detetail")
public class EmpDetail implements java.io.Serializable {
private static final long serialVersionUID = 7342724430491939936L;
@Column(name="EmployeeId")
@Id
@GeneratedValue
private int employeeId;
.......
}
3) JPA Respository
public interface EmpDetailRepository extends JpaRepository<EmpDetail, Integer> {
}
4) DAO
@Repository("empDetailDao")
public class EmpDetailDaoImpl implements EmpDetailDao {
@Resource
private EmpDetailRepository empDetailRepository;
@Override
@Transactional
public EmpDetail insertEmpDetails(EmpDetail empDetail) {
return empDetailRepository.saveAndFlush(archive);
}
}
5) Класс обслуживания
@Service
public class EmpDetailServiceImpl implements EmpDetailService{
@Autowired
private EmpDetailDao empDetailDao;
@Autowired
private EmpDetail empBO;
private EmpDetail toInsertEmpDetails(int active, String empName) throws
Exception {
empBO.setName(empName);
empBO.setActive(active);
empBO = empDetailDao.insertEmpDetails(empBO);
}
return empBO;
}
6) код Контроллер
@RestController
public class EmpDeatilController {
@Resource
private EmpDetailService empDetailService;
@RequestMapping(value = "/insertEmpDetail", method =
RequestMethod.GET)
@ResponseBody
public EmpDetialResponse insertEmpDetail(@RequestParam("empName") String
empName, @RequestParam("active") int active) throws Exception{
return empDetailService.toInsertEmpDetails(active, empName);
}
}
Пожалуйста, помогите мне.
Заранее спасибо
спасибо за ответ, но я не понимаю, что вы подразумеваете под удалением поля, это удаление переменной экземпляра и объявление локальной переменной или удаление Autowired Annotation из кода. – mbf
Удалите переменную экземпляра и используйте только локальную переменную. – dunni
Я пробовал, но без изменений – mbf