这是主要功能,值已设置为bean。package demo.sphbIntegrate;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class App { public static void main( String[] args ) { ApplicationContext context=new ClassPathXmlApplicationContext("sphb.xml"); EmployeeDAO edao=(EmployeeDAO) context.getBean("d"); Employee e=new Employee(); e.setId(1); e.setName("sourav"); e.setSalary(100000); edao.saveEmployee(e); }}这是豆类。package demo.sphbIntegrate;public class Employee { private int id; private String name; private int salary; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getSalary() { return salary; } public void setSalary(int salary) { this.salary = salary; } }这是我的 DAO 课程。package demo.sphbIntegrate;import org.springframework.orm.hibernate5.HibernateTemplate;public class EmployeeDAO { HibernateTemplate template; public void setTemplate(HibernateTemplate template) { this.template = template; } public void saveEmployee(Employee e) { template.saveOrUpdate(e); }}根据代码,必须将记录输入到表中。但是,发生了一些奇怪的事情,执行了一个选择查询,这在整个程序中都没有提到。我无法理解这个异常。PS:我确定,我正在运行正确的程序并且所有文件都正确保存,整个包中也没有编写选择查询的代码。这是输出:log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).log4j:WARN Please initialize the log4j system properly.log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.Hibernate: select employee_.ID, employee_.NAME as NAME2_0_, employee_.SALARY as SALARY3_0_ from EMPLOYEE employee_ where employee_.ID=?
1 回答
慕斯王
TA贡献1864条经验 获得超2个赞
在这种情况下没有什么可担心的,因为saveOrUpdate()
保存和更新这两项工作都完成了。
它首先检查您传递的 ID 是否存在于表中,原因与您看到选择查询的原因相同。如果您仔细观察您的查询
select employee_.ID, employee_.NAME as NAME2_0_, employee_.SALARY as SALARY3_0_ from EMPLOYEE employee_ where employee_.ID=?
你会看到ID
在哪里条件。
如果此查询没有返回结果,则只会插入新记录,否则将发生更新。
添加回答
举报
0/150
提交
取消