插入和更新,对于空字段,生成的sql不想包含改字段,查了资料说使用这个的,但是,我的却没效果,和没使用是一样的,部分代码:
import java.util.Date;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
/**
-
系统用户表 添加动态插入和动态更新
*/
@Entity
@Table(name = "user", catalog = "showlove")
@DynamicInsert(true)
@DynamicUpdate(true)
public class User extends BaseModel {private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "userId", nullable = false)
private Integer userId;/**
- 角色Id,级联更新、刷新,懒加载 */ @ManyToMany(fetch = FetchType.LAZY, cascade = {CascadeType.REFRESH,CascadeType.MERGE }) @JoinTable(name = "users_roles", joinColumns = @JoinColumn(name = "userId"), inverseJoinColumns = @JoinColumn(name = "roleId")) private Set roles;
@Column(name = "username", length = 18, nullable = false)
private String userName;@Column(name = "password", length = 18, nullable = false)
private String password;@Column(name = "sex", length = 4, nullable = true)
private String sex;@Column(name = "nickname", length = 16, nullable = true)
……
测试代码:
@Test
public void testUpdate(){
User user=new User();
user.setUserId(24);
// Role role=new Role();
// role.setRoleId(1);
user.setActivated(1);
userService.update(user);
}
生成的sql:
update
showlove.user
set
activated=?,
age=?,
createDate=?,
email=?,
nickname=?,
password=?,
phone=?,
sex=?,
username=?
where
userId=?