hibernate 联合主键

本文详细介绍了Hibernate与JDBC在数据库操作上的不同之处,包括HQL与SQL的区别、分页查询的实现方式、主键映射、模糊搜索处理以及Hibernate在数据库映射时的特有属性。同时,提供了保存主键实例的方法和解决模糊搜索中特殊字符处理的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hibernate的hql修改时 和普通的JDBC有点区别

例如JDBC: update user set name = ? and password = ? where id = ?HQL

必须是:update user set nmae =? ,password = ? where id = ? ;

hibernate分页时:query.setFirstResult((currentPage - 1 ) * pageSize);

query.setMaxResults(pageSize);

其中setMaxResults的意思是 从当前向后取多少条而不是从多少条到多少条

hibernate 映射到数据库时,如果不希望某个字段映射到数据库可使用@Transient标签

hibernate联合主键时】

@Embeddablepublic class PK implements Serializable {

 @Column

private String first;

@Column private String second;

//hashCode equals方法必须重写}

@Entity

public class Person {

 @EmbeddedId private PK pk;

private String name;

 //........}

在保存时须对主键赋值

PK pk =new Pk()pk.setFirst();

pk.setSecond;

Person person =new Person();

perrson.setPk(pk);

如果不对引用主键赋值 就会报错org.hibernate.id.IdentifierGenerationException对于模糊搜索时有些特殊字符需要处理如% _ 等处理时需要将字符转义

例如:conditon = conditon.replaceAll("%", \\\\%);

conditon = conditon.replaceAll("_", \\\\_);

String HQL = "SELECT COUNT(serial) AS num FROM tbl_vlan WHERE userid = ? " + " AND status = ? AND ( Upper(vlan) like ? " + " OR Upper(vlanname) like ? OR Upper(createtime) like ? ESCAPE '\' ) ");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值