当前位置:编程学习 > JAVA >>

为什么@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进行性能优化!!! --------------------编程问答-------------------- 没人回答 --------------------编程问答-------------------- 帖子发重复了。 --------------------编程问答-------------------- --------------------编程问答-------------------- 帮楼主,增增人气。 --------------------编程问答--------------------
引用 2 楼 huangchenliang 的回复:
帖子发重复了。

重复了,都没有人解答,呵呵。
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,