hibernate4 DetachedCriteriaBuilder的基本案例
来源:互联网 发布:晓千星 知乎 编辑:程序博客网 时间:2024/06/05 17:32
实体的映射
@Entity
@Table(name = "VISITOR_INFO")@DynamicInsert
@DynamicUpdate
public class VisitorInfo implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L; //是这个实体保持唯一性
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name="NAME")
private String name;
@Column(name="POSITION")
private String position;
@Column(name="COUNTRY")
private String countryId;
//关联时要注意joinColumn的name属性要和上面的一致,referencedColumnName表示关联的哪一个属性@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="COUNTRY",updatable=false,insertable=false,referencedColumnName="C_KEY")
private CountryView country;
@Column(name = "CITY")
private String city;
@Column(name="CONTACT")
private String contact;
@Column(name="LINKMAN")
private String linkMan;
@Column(name="DESCRIPTION")
private String description;
@Column(name="ADDINFO")
private String company;
@Column(name = "VISIT_ID")
private Long visitId;
@Column(name = "CRT_TIME")
@Temporal(TemporalType.TIMESTAMP)
private Date createDate;
@Column(name = "CRT_USER_ID")
private Long createBy;
@Column(name = "UPD_TIME")
@Temporal(TemporalType.TIMESTAMP)
private Date updateDate = new Date();
@Column(name = "UPD_USER_ID")
private Long updateBy;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "VISIT_ID", updatable = false, insertable = false)
private VisitApply visitApply;
@Column(name="DESC_MORE")
private String desc;
//表中没有的字段,但是需要在页面中显示出来,可以用@Transient表示
@Transient
private String code;
@Transient
private Date visitDate;
@Transient
private Integer count;
@Transient
private String attitude;
@Transient
private String currentSystem;
@Transient
private Date dateFrom;
@Transient
private Date dateTo;
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Classroom other = (Classroom) obj;
if (id == null) {
if (other.getId() != null)
return false;
} else if (!id.equals(other.getId()))
return false;
return true;
}
}
dao层
@Repository
public class VisitorInfoDao extends BaseDAO<VisitorInfo>{
public PagingVO findByFilter(PagingVO page, VisitorInfoVo visitorInfoVo){
DetachedCriteriaBuilder query=initQuery(visitorInfoVo);
DetachedCriteriaBuilder count=initQuery(visitorInfoVo);
return this.selectPagingVO(query, page,count);
}
private DetachedCriteriaBuilder initQuery(VisitorInfoVo visitorInfoVo) {
DetachedCriteriaBuilder query=DetachedCriteriaBuilder.instance(VisitorInfo.class,"vi");
query.leftJoin("visitApply", "va");
query.leftJoin("country", "country");
//select语句
query.setProjection(Projections.projectionList().
add(Projections.property("vi.name"),"name").
add(Projections.property("vi.company"),"company").
add(Projections.property("vi.position"),"position").
add(Projections.property("vi.contact"),"contact").
add(Projections.property("country.value"),"countryId").
add(Projections.property("city"),"city").
add(Projections.property("va.code"),"code").
add(Projections.property("va.dateFrom"),"dateFrom").
add(Projections.property("va.dateTo"),"dateTo").
add(Projections.property("va.visitorCount"),"count").
add(Projections.property("va.currentSystem"),"currentSystem").
add(Projections.property("va.attitude"),"attitude"));
query.addEq("country.locale", visitorInfoVo.getLocale().getLanguage()); //是date变为string类型
//因为业务的需要根据时间条件查询时,必须精确到时分秒,但是在页面上不显示时分秒
if(visitorInfoVo.getDate()!=null){
Calendar c=Calendar.getInstance();
c.setTime(visitorInfoVo.getDate());
//<=
c.set(Calendar.HOUR_OF_DAY, 23);
query.addLe("va.createDate", c.getTime());
c.set(Calendar.HOUR_OF_DAY, 0);
//>=
query.addGe("va.createDate", c.getTime());
}
query.addLikeAny("vi.name", visitorInfoVo.getName());
query.addLikeAny("vi.contact", visitorInfoVo.getTel());
query.addLikeAny("vi.company", visitorInfoVo.getCompany());
query.getDetachedCriteria().setResultTransformer(new AliasToBeanResultTransformer(VisitorInfo.class));
return query;
}
}
- hibernate4 DetachedCriteriaBuilder的基本案例
- hibernate4中 DetachedCriteriaBuilder的一般用法 (保持更新)
- Hibernate4 关联关系的映射案例
- Hibernate4教程三:Hibernate的基本开发
- Hibernate4 hello案例
- Hibernate4 基本查询
- hibernate4操作数据库blob案例
- Hibernate4实战 之 第二部分:Hibernate的基本配置
- Hibernate4实战 之 第三部分:Hibernate的基本开发
- Hibernate4实战 之 第二部分:Hibernate的基本配置
- Hibernate4实战 之 第三部分:Hibernate的基本开发
- Hibernate4实战 之 第二部分:Hibernate的基本配置
- Hibernate4实战 之 第三部分:Hibernate的基本开发
- Hibernate4实战 之 第二部分:Hibernate的基本配置
- Hibernate4实战 之 第三部分:Hibernate的基本开发
- Hibernate4实战 之 第二部分:Hibernate的基本配置
- Hibernate4实战 之 第三部分:Hibernate的基本开发
- Hibernate4实战 之 第二部分:Hibernate的基本配置
- Windows Authentication with Chrome and IIS
- 01-背包问题---Bone Collector
- Android客户端程序通过Web Service实现对服务器端数据库的查询
- I2C组件(新)
- 关于java.lang.OutOfMemoryError: PermGen space问题的解决办法
- hibernate4 DetachedCriteriaBuilder的基本案例
- 【数据库之事务(一)】事务是什么,以及事务四个特性,以及事务并发问题和隔离级别
- Maven生命周期
- Where is my java?
- ubuntu调节屏幕亮度
- Java中设置classpath、path、JAVA_HOME的作用
- static_cast用法浅析
- 【转】Android内存优化总结
- plsql连接Oracle