为什么@org.hibernate.annotations.Entity(dynamicUpdate = true, dynamicInsert = true)
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Transient;
import org.compass.annotations.Searchable;
import org.compass.annotations.SearchableId;
import org.compass.annotations.SearchableProperty;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.Id;
import javax.persistence.Table;
/**
* @author QQ:330805206
*/
@Entity
@org.hibernate.annotations.Entity(dynamicUpdate = true, dynamicInsert = true)
@Table(name = "t_admin")
@Searchable(root = false)
public class Admin
{
@SearchableId
@Id
@GeneratedValue(generator = "JackieGenerator")
@GenericGenerator(name = "JackieGenerator", strategy = "native")
private int id;
// 用户名
@SearchableProperty(name = "username")
@Column(nullable = false)
private String username;
// 密码
@Column(nullable = false)
private String password;
// 单位
@ManyToOne
@JoinColumn(name = "department", nullable = false)
private Department department;
// 以下字段不映射到数据库
@Transient
private String departmentid;
public int getId()
{
return id;
}
public void setId(int id)
{
this.id = id;
}
public String getUsername()
{
return username;
}
public void setUsername(String username)
{
this.username = username;
}
public String getPassword()
{
return password;
}
public void setPassword(String password)
{
this.password = password;
}
public Department getDepartment()
{
return department;
}
public void setDepartment(Department department)
{
this.department = department;
}
public String getDepartmentid()
{
return departmentid;
}
public void setDepartmentid(String departmentid)
{
this.departmentid = departmentid;
}
}
不管是插入还是更新,都是生成全部的sql,郁闷,请高手指点我!
下面的dao的插入和更新代码
public void createObject(T t)
{
this.getHibernateTemplate().save(t);
}
public void updateObject(T t)
{
this.getHibernateTemplate().update(t);
}
起作用的话,类似这样的效果
Hibernate: update test set descn=?, name=? where id=?
上面是全部的sql语句,如果动态修改起作用,假如只修改descn字段,应该是
Hibernate: update test set descn=? where id=?
而不是
Hibernate: update test set descn=?, name=? where id=?
有人说是因为Struts2的ModelDriven原因,
public class AboutAction extends BaseAction implements ModelDriven<About>
{
private About about = new About();
public About getModel()
{
return about;
}
.......
......
}
哎,问题好几天了,也没人帮忙解决。
我最终要到达的目的就是要对hibernate进行性能优化!!! --------------------编程问答-------------------- 没人回答 --------------------编程问答-------------------- 帖子发重复了。 --------------------编程问答-------------------- --------------------编程问答-------------------- 帮楼主,增增人气。 --------------------编程问答--------------------
重复了,都没有人解答,呵呵。
补充:Java , Web 开发