Hibernate 持久化问题

A_ALERT 2011-06-01 05:30:08

直接入题
我使用 hibernate 保存一个 node , node 关联 build
代码片段

@Entity
@Table(name = "tb_node" , uniqueConstraints = {@UniqueConstraint(columnNames = {"node_name"})})
public class Node implements Serializable {

private static final long serialVersionUID = 5739459432161066845L;

private Long id;
private Building build;
。。。。

@ManyToOne(fetch = FetchType.LAZY,cascade={CascadeType.MERGE,CascadeType.REFRESH})
@JoinColumn(name = "build_id", nullable = false)
public Building getBuild() {
return build;
}

public void setBuild(Building build) {
this.build = build;
}


当我添加Node之后


dao.save(node);
List<RuleIndex> indexlst = getNodeParam(node);
if(indexlst != null){
addDefaultRule(node , indexlst);
}
node.setBuild(b_dao.get(node.getBuild().getId()));
dao.createNodeDataTable(node);

build 信息只有 id
我必须去手动载入 build 信息, 很是奇怪 延迟加载在这里没有用 既然我保存了Node 这个node也是持久态了 如何直接使用build 就是不行 , 不过我想 肯定是我有知识点还不知道 我想如何在这里使用延迟加载

我使用了opensessioninviewfilter 这个就不说了 waiting for you


...全文
121 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
A_ALERT 2011-06-02
  • 打赏
  • 举报
回复
补充问题 : 还有一个现象 我使用 Hibernate.initialize(Node.getBuilding()) 我叉 , 他也加载不出来 , 我只能手动查询 node.setBuild(b_dao.get(node.getBuild().getId())); 见鬼了, 配置文件也在上面 各位帮我看看
A_ALERT 2011-06-02
  • 打赏
  • 举报
回复
帅哥 , 我文章里面说了 我配置了..
romanitc 2011-06-02
  • 打赏
  • 举报
回复
在web.xml里配置一个OpenSessionInViewFilter,试试



<filter>
<filter-name>openSessionInView</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
<init-param>
<param-name>sessionFactoryBeanName</param-name>
<param-value>sf</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>openSessionInView</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

A_ALERT 2011-06-02
  • 打赏
  • 举报
回复
可能我说的不是太清楚 我说我 不去手动加载 build 信息 ,而是用 session 延迟加载 node.getBuilding().getName() 直接可以使用 (如果我不去手动加载building 信息 我是没办法直接使用的) , 我debug 调试了 Session 也没有关闭 奇怪为什么用不了延迟加载
TKD03072010 2011-06-02
  • 打赏
  • 举报
回复
不明白...
亲努力啊 2011-06-01
  • 打赏
  • 举报
回复
你想怎么用?

67,536

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧