-
Hibernate多对一的取值问题10
有 Stream.clss 与 Vip.class 两个类分别对应数据库中两个表如下:
//.....Stream.class..... public class Stream { private int id; private String title; private Vip vip; ..... public Vip getVip() { return vip; } public void setVip(Vip vip) { this.vip = vip; } } // .....Vip.class..... public class Vip { private int uid; private String name; .....getter...setter...... }
//.....Stream.class(多)的映射关系............ <class name="Stream" table="streams"> <id name="id" type="java.lang.Integer"> <column name="id"/> <generator class="identity"/> </id> <property name="title" type="java.lang.String"> <column name="title"/> </property> <property name="uid" type="java.lang.Integer"> <column name="uid"/> </property> <many-to-one name="vip" column="uid" class="Vip" cascade="none" outer-join="true" insert ="false" update ="false" /> .....
// .....Vip.class(一)的映射关系............ <class name="Vip" table="vip"> <id name="uid" type="java.lang.Integer"> <column name="uid"/> <generator class="identity"/> </id> <property name="name" type="java.lang.String"> <column name="name"/> </property> .....
处理的程序为:// ....处理程序Execution.class...... query = session.createQuery("from ....."); query.setFirstResult(0); query.setMaxResults(20); List<Stream> list = query.list(); ....
到现在全部运行正常,之所以Stream映射表的时候的uid属性重复定义是为了以后更新Stream表方便,在程序Execution中用for(Stream s : list) { System.out.println(s.getVip().getName()); }
可以输出全部正确的值。
输出到jsp的时候遇到问题了:
如果不在Execution.class中执行System.out.println(s.getVip().getName());这一句话,在jsp页面迭代输出的时候<s:iterator id="rl" value="resultList"> <s:property value="#rl.title" /> <s:property value="#rl.vip.name" /> </s:iterator>
<s:property value="#rl.vip.name" />这里就获取不到任何值,是空的,如果在Execution.class中执行s.getVip().getName()这句jsp页面就可以正常输出值。
百思不得其解,如何解决这个问题,怎么引起的这个问题?
拜谢。
问题补充
一天了还没找到解决方法
问题补充
是不是因为没设置lazy的原因呢
问题补充yxb1990 写道OpenSessionInViewFilter 设置了没?
原因找到了,在many-to-one 的时候没有设置lazy= “false” 这样查询的时候会才不会懒加载,一次性的把所以结果都返回了,这次错误的根源就是对hibernate的基础掌握的太垃圾了。。。。
问题补充java_user 写道还是不要用hibernate的对应关系了,那样只会使系统数据量停留在毕业设计的水平
不用对应关系,如果要获得关联表中的数据就得自己手动查询一遍,如果不手动查询还有更好的方法吗?2012年5月21日 15:11
10个答案 按时间排序 按投票排序
-
<s:iterator id="rl" value="resultList">
<s:property value="#rl.title" />
<s:property value="#rl.vip.name" />
</s:iterator>这个 有错误吧 表达式 貌似用错了。 value 中 有值吗 ,这样写的话 应该 resultlist 中的值在值栈中。如果不是在值栈中 要用 value=“#request. resultlist” 吧 。应该是这个问题。2012年5月31日 09:34
-
我不同意“还是不要用hibernate的对应关系了,那样只会使系统数据量停留在毕业设计的水平”这句话,其实hibernate优化是很值得研究的,系统数据量也是根据实际情况去考虑,不能简简单单的任务越少越好。
2012年5月25日 23:01
-
不知楼主有没有用spring的OpenSessionInViewFilter
在web.xml中配下<filter> <filter-name>OpenSessionInViewFilterfilter-name</filter-name> <filter-class> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter </filter-class> <init-param> <description> </description> <param-name>sessionFactoryBeanName</param-name> <param-value>orchardSessionFactory</param-value> </init-param> <init-param> <param-name>flushMode</param-name> <param-value>AUTO</param-value> </init-param> </filter>
2012年5月22日 16:47
相关推荐
hibernate.max_fetch_depth 参数用于设置单向关联(一对一,多对一)的外连接抓取(outer join fetch)树的最大深度。其取值为 0 到 3 之间,建议取值为 1 或 2。 8. hibernate.default_batch_fetch_size ...
通过对 Hibernate 配置参数的详细介绍,我们不仅了解了如何优化 Hibernate 的运行效率,还学会了如何根据实际需求调整各种配置以适应不同的开发场景。例如,通过设置合适的 `hibernate.max_fetch_depth` 和 `...
#### 一、Hibernate配置项概览 Hibernate作为一款优秀的Java持久层框架,提供了丰富的配置选项,以适应不同场景下的需求。本文档将详细解析Hibernate的各种可选配置,帮助开发者深入了解并合理利用这些配置,提升...
以`School`和`Address`为例,假设我们有一个多对多的关系,在这种情况下,`inverse`属性可以用来指定由哪一方来维护这个关联关系。 ```java // School类 @ManyToMany(mappedBy = "schools") private Set<Address> ...
为了确保Hibernate能够正确地工作,我们需要在`hibernate.cfg.xml`文件中进行一系列的配置。本文将详细介绍`hibernate.cfg.xml`中各个配置项的意义及其可能的取值,帮助开发者更好地理解和应用这些配置。 #### 二、...
其中,`hibernate.hbm2ddl.auto`属性决定了Hibernate对数据库表的操作。常见的取值有: - `create`:每次启动应用时,都会删除旧表并重新创建新表,适合开发阶段。 - `update`:只更新已有表结构,不会删除表,适用...
6. **多对一/一对多关系设计**:设计User类,Card类(会员卡)和Email类,User与Card和Email为一对多关系。这种设计允许User有多个Card和Email实例,方便扩展。 7. **主键设计的优劣**:将身份证号码作为主键可能...
在SSH(Spring、Struts、Hibernate)架构中,Hibernate作为持久层框架,主键生成策略的正确选择对系统的稳定性和可扩展性有直接影响。 1. **assigned**策略: 这种策略要求开发者在调用`save()`方法之前手动设置主...
值得注意的是,该方法被声明为 synchronized,这意味着在同一 JVM 内部可以确保线程安全,但在多 JVM 并发访问同一数据库时,则可能出现主键冲突的问题,尤其是在插入操作频繁发生的场景下。因此,这种策略更适合...
该文件中包含了多个配置属性,用于控制 Hibernate 的各种功能和特性。本文将对 Hibernate.cfg.xml 中的配置信息进行详细的解释和分析。 hibernate.dialect Hibernate.dialect 属性用于指定 Hibernate 的数据库 ...
本课件主要讲解了Hibernate中不同类型的表间关联,包括一对一、一对多、多对多的映射方式以及主键生成策略。 1. 主键生成策略: - `assigned`:由用户手动指定主键值。 - `increment`:由Hibernate内部递增,适用...
- **作用**:控制Hibernate在查询时对外键关联的数据进行抓取的程度,提高查询效率。 ##### 8. **hibernate.default_batch_fetch_size** - **用途**:设置默认的批量抓取大小。 - **取值**:推荐值为4、8或16。 ...
6. **多对一/一对多关系设计**: 设计User、Card和Email类,User与Card和Email是多对一关系。User类包含Card和Email集合属性,Card和Email类则包含User引用。 7. **主键设计的优劣**: 身份证作为主键的缺点是...
通常情况下,推荐使用`hibernate.cfg.xml`,因为它提供了更多的配置选项和更好的可读性。 ##### `hibernate.cfg.xml`常用属性 - **`connection.url`**:用于指定数据库的URL。 - **`connection.username`**:数据库...
9. 熟悉配置一对一、一对多、多对一等关联关系的方法。 10. 了解如何在Java域模型中表示数据库的主键参考关系。 11. 实现数据库中表间主外键的参考关系。 12. 理解Session缓存的作用,配置第二级缓存。 13. 明白事务...
选项C正确,一对多关系可以用Set、List或Map映射,而多对一关系通常用Set映射。 14. **SessionFactory** 选项C正确,SessionFactory是重量级对象,不应频繁创建。一个SessionFactory对应一个数据库源。 15. **...
【hibernate 详细配置】是指在Java应用中配置Hibernate框架的过程,这涉及到一系列的属性设置,以便让Hibernate能够与特定的关系数据库进行有效交互并优化性能。以下是对这些配置属性的详细说明: **1. hibernate....
主键是表中的一个或多个字段组合,用于唯一标识表中的每一条记录。Hibernate 支持多种主键生成策略,包括 `assigned`、`increment`、`hilo` 和 `seqhilo` 等,这些策略具有不同的特性和适用场景。 #### 二、主键...
### Java基本数据类型及其字节大小 在Java编程语言中,基本数据类型是构建更...同时,Hibernate作为一款强大的ORM框架,不仅简化了数据库操作,还提高了开发效率和代码的可维护性,是Java开发者不可或缺的工具之一。
在Java的持久化框架Hibernate中,注解的使用极大地简化了对象关系映射的过程,使得开发者无需编写XML映射文件,就能实现类与数据库表之间的映射。Hibernate不仅支持Java Persistence API (JPA)的标准注解,还针对JPA...