,可以在调用remove方法的时候将 isdeleted列设置为"-1";
3、创建数据表的时候,所有的列名都是用的小写字母,因此有的列映射需要明确指定, 如@Column(name = "logintime",insertable=false);
4、对于在创建数据表的时候定义了默认值的列,如regtime、regtime、logintime、 isdeleted,在向数据库中添加数据的时候,可以不在insert语句中指定这些列,而让它们 使用默认值,因此,需要告诉Hibernate在生成insert语句的时候不要包含这些列,可以使 用insertable=false语句,如@Column(name = "regtime",insertable=false);
5、指定时间精度,使用@Temporal(TemporalType.TIMESTAMP);
6、指定users表通过roleid和roles表进行多对一映射,使用@ManyToOne和@JoinColumn (name="roleid")
Role.java则比较简单,如下:
package com.xkland.domain;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = " roles " )
public class Role implements Serializable {
private Integer id;
private String name;
private String privilegesFlag;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Integer getId() {
return id;
}
public void setId(Integer id) {
this .id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this .name = name;
}
public String getPrivilegesFlag() {
return privilegesFlag;
}
public void setPrivilegesFlag(String privilegesFlag) {
this .privilegesFlag = privilegesFlag;
}
}
SpringSide开发实战(四):打通数据持久层的任督二脉(5)
时间:2011-05-07 blogjava 海边沫沫
下一步再来看看users和groups之间的映射关系,不难想象,当载入一个用户的资料时, 往往需要知道他加入了哪些群,而载入一个群的资料时,往往需要知道它有哪些用户,因此 ,他们之间是一个双向的关系,同时,载入一个群的资料时,还需要知道它的管理员是谁, 因此又同时存在一个单向的多对一关系。在多对多关系中,设定User为主控方,所以需要在 User.java中添加如下代码?
private List < Group > groups;
@ManyToMany(targetEntity = User. class ,
cascade = {CascadeType.PERSIST, CascadeType.MERGE} )
@JoinTable(name = " users_groups " ,
joinColumns = {@JoinColumn(name = " userid " )} ,
inverseJoinColumns = {@JoinColumn(name = " groupid " )} )
public List < Group > getGroups() {
return groups;
}
public void setGroups(List < Group > groups) {
this .groups = groups;
}
而整个Group.java的代码如下:
package com.xkland.domain;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import org.springside.core.dao.extend.Undeletable;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import javax.persistence. * ;
@Entity
@Table(name = " groups " )
@Undeletable(status = " isDeleted " )
public class Group implements Serializable {
private Integer id;
|