用hibernate查询一个表的数据,结果条数正确,但是所有记录均为最后一条记录的数据。
数据库表和数据如下:
dm xh mc
0001 01 张三
0001 02 李四
0001 03 李雷
有实体
User.java
public class User {
private String dm;
private String xh;
private String mc;
public String getDm() {
return dm;
}
public void setDm(String dm) {
this.dm = dm;
}
public String getXh() {
return xh;
}
public void setXh(String xh) {
this.xh = xh;
}
public String getMc() {
return mc;
}
public void setMc(String mc) {
this.mc = mc;
}
}
hibernate映射文件:
<class name="User" table="user" schema="user" lazy="false">
<id column="dm" length="6" name="xh" type="string">
<generator class="assigned" />
</id>
<property column="xh" length="2" name="xh" type="string" />
<property column="mc" length="20" name="xh" type="string" />
</class>
程序里的hql语句为 from User where dm = '0001'
结果为:
dm xh mc
0001 03 李雷
0001 03 李雷
0001 03 李雷
最后在网上查询相关信息得知,是因为主键设置不正确,以dm为主键不能唯一标识一条记录,这样hibernate在检索时即认为该条数据已经存在缓存中,只会更新上一条记录,不会作为不同的记录返回。
最后修改hibernate映射问件,以dm和xh作为联合主键后,查询结果正确。
分享到:
相关推荐
4. **灵活的查询方式**:Hibernate提供了多种查询方式,包括Criteria API、Query By Example (QBE)、Hibernate Query Language (HQL)以及原生SQL等。 #### 三、Hibernate架构概览 **Hibernate架构**是围绕着几个...
7. **事务管理**:由于数据库操作往往涉及多条SQL语句,因此需要使用`Transaction`进行事务控制,确保数据的一致性。在Servlet中,通常在开始操作前开启事务,结束后提交或回滚事务。 8. **缓存**:Hibernate提供了...
批处理能一次发送多条SQL语句,减少网络开销;延迟加载避免了不必要的数据加载;连接池管理数据库连接,提高连接复用。 总的来说,"hibernate-release-5.0.6.Final.zip"为开发者提供了完整的Hibernate环境,通过...
在这个场景中,一个实体(类)可以拥有多个其他实体实例,就像在数据库中一个表的一条记录可以关联到另一表的多条记录一样。我们来详细探讨一下Hibernate一对多映射的实现方法、配置以及应用场景。 **1. 实体类定义...
5. **事务处理**:在进行多条操作时,通常需要包裹在Transaction中,确保数据的一致性。 **五、性能优化** 1. **缓存策略**:合理配置缓存,比如开启二级缓存,选择合适的缓存插件,如EhCache。 2. **批处理**:...
3. **批处理**:通过设置批处理大小,可以一次提交多条SQL语句,提高数据库操作效率。 总之,Hibernate通过ORM技术极大地简化了Java应用与数据库的交互,减少了手动编写SQL的繁琐工作。掌握Hibernate的使用,对于...
- **批量插入与更新**: Hibernate支持批量操作,可以在一次数据库调用中插入或更新多条记录。 - **乐观锁与悲观锁**: 为了解决并发控制问题,Hibernate提供了这两种不同的锁定机制。 - **事件监听器**: 通过注册事件...
Hibernate主要用来实现Java对象和表之间的映射,除此之外还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL和JDBC处理数据的时间。Hibernate的目标是对于开发者通常的数据持久化相关的编程任务,...
由于Spring通过代理Hibernate完成数据层的操作,所以原Hibernate的配置文件hibernate.cfg.xml的信息也转移到Spring的配置文件中: 代码 4 Spring中有关Hibernate的配置信息 1. 2. !-- 数据源的配置 //--> 3. ...
7. **事务处理**:在涉及多条数据库操作时,使用Session的`beginTransaction()`, `commit()`, `rollback()`方法进行事务管理。 8. **关闭资源**:操作完成后,记得关闭Session和SessionFactory,释放资源。 在实际...
它将数据库中的数据与程序中的对象进行关联,使得开发者可以像操作对象一样操作数据库,而无需关注底层的SQL语句。在Java开发中,有许多成熟的ORM框架,如Hibernate、MyBatis等。本文我们将探讨一个自建的ORM框架...
* N+1 与 1+M:针对一端,如果查询有 m 个对象,这时会先发送 1 条 sql 语句查出 m 个对象,然后再发送 m 条 sql 语句查关联对象 七、事务控制 * 事务方面对性能有影响的主要包括:事务方式的选用、事务隔离级别...
介绍了如何设置查询条件以过滤出所需的数据。 #### 5.3 添加条件数据集 描述了如何添加用于存储查询条件的数据集。 #### 5.4 添加用于条件输入的表单 解释了如何创建表单来收集用户的查询条件输入。 #### 5.5 ...
例如数据表中用户选择字段方式的改变,用户查询的需求也会不断的更新和完善。所有这些,都要求系统提供足够的手段进行功能的调整和扩充。而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要...
7. **事务管理**:由于SSH中的业务操作通常涉及多条数据库记录,因此需要事务来保证数据的一致性。Spring提供了一套完整的事务管理机制,可以在Service层进行声明式或编程式事务管理。 8. **异常处理**:项目中提到...
Ajax 的主要特点是无需刷新页面便可向服务器传输或读写数据这样就可以像再发桌面应用程序一样同服务器进行数据层面的交换,而不用每次都刷新界面,也不用每次将数据处理的工作提交给服务器来做,这样即减轻了服务器...
"CURD " 但是和Hibernate一样 实现DAO(数据)层的功能 "增删改查" Hibernate 实体类 生成表结构 ---- 领域(Domain)驱动建模 这次使用的是驱动建模,传统的设计模式是: 先设计表,再创建实体 JPA 注解使用 @...
查询数据,前面已经讲过简单的,主要看查询出列表的 查询出列表,也就是返回list, 在我们这个例子中也就是 List<User> , 这种方式返回数据,需要在User.xml 里面配置返回的类型 resultMap, 注意不是 resultType, 而...
然后插入一条初始数据,如用户名为'bill',密码为'123'。 2. **配置Tomcat服务器**:在MyEclipse中,通过Windows -> preferences设置Tomcat 5.x的安装路径,确保IDE能够识别并管理Tomcat服务器。 3. **配置数据库...