0 0

hibernate再次生成问题 30

我hibernate已经生成了DAO 后续又加给数据库加入新表再次要生成DAO及POJO需要注意什么????



我自己可能生成出了问题 所以程序报错了
java.lang.ClassCastException: com.po.Users
这是类型转换异常



我的全部财产~  谢谢大家帮帮忙了
问题补充:
我用的是SSH框架。     就是Hibernate反向生成DAO


这个肯定是我第二次生成DAO时错误了   可能是操作失误  还是第2次生成DAO要注意什么
请大家指点


还有1楼的地址无效了~
问题补充:
users


package com.po;

/**
* Users generated by MyEclipse Persistence Tools
*/

public class Users implements java.io.Serializable {

// Fields

private UsersId id;

// Constructors

/** default constructor */
public Users() {
}

/** full constructor */
public Users(UsersId id) {
this.id = id;
}

// Property accessors

public UsersId getId() {
return this.id;
}

public void setId(UsersId id) {
this.id = id;
}

}




UsersDAO




package com.po;

import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.LockMode;
import org.springframework.context.ApplicationContext;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

/**
* Data access object (DAO) for domain model class Users.
*
* @see com.po.Users
* @author MyEclipse Persistence Tools
*/

public class UsersDAO extends HibernateDaoSupport {
private static final Log log = LogFactory.getLog(UsersDAO.class);

// property constants

protected void initDao() {
// do nothing
}

public void save(Users transientInstance) {
log.debug("saving Users instance");
try {
getHibernateTemplate().save(transientInstance);
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}

public void delete(Users persistentInstance) {
log.debug("deleting Users instance");
try {
getHibernateTemplate().delete(persistentInstance);
log.debug("delete successful");
} catch (RuntimeException re) {
log.error("delete failed", re);
throw re;
}
}

public Users findById(com.po.UsersId id) {
log.debug("getting Users instance with id: " + id);
try {
Users instance = (Users) getHibernateTemplate().get("com.po.Users",
id);
return instance;
} catch (RuntimeException re) {
log.error("get failed", re);
throw re;
}
}

public List findByExample(Users instance) {
log.debug("finding Users instance by example");
try {
List results = getHibernateTemplate().findByExample(instance);
log.debug("find by example successful, result size: "
+ results.size());
return results;
} catch (RuntimeException re) {
log.error("find by example failed", re);
throw re;
}
}

public List findByProperty(String propertyName, Object value) {
log.debug("finding Users instance with property: " + propertyName
+ ", value: " + value);
try {
String queryString = "from Users as model where model."
+ propertyName + "= ?";
return getHibernateTemplate().find(queryString, value);
} catch (RuntimeException re) {
log.error("find by property name failed", re);
throw re;
}
}

public List findAll() {
log.debug("finding all Users instances");
try {
String queryString = "from Users";
return getHibernateTemplate().find(queryString);
} catch (RuntimeException re) {
log.error("find all failed", re);
throw re;
}
}

public Users merge(Users detachedInstance) {
log.debug("merging Users instance");
try {
Users result = (Users) getHibernateTemplate().merge(
detachedInstance);
log.debug("merge successful");
return result;
} catch (RuntimeException re) {
log.error("merge failed", re);
throw re;
}
}

public void attachDirty(Users instance) {
log.debug("attaching dirty Users instance");
try {
getHibernateTemplate().saveOrUpdate(instance);
log.debug("attach successful");
} catch (RuntimeException re) {
log.error("attach failed", re);
throw re;
}
}

public void attachClean(Users instance) {
log.debug("attaching clean Users instance");
try {
getHibernateTemplate().lock(instance, LockMode.NONE);
log.debug("attach successful");
} catch (RuntimeException re) {
log.error("attach failed", re);
throw re;
}
}

public static UsersDAO getFromApplicationContext(ApplicationContext ctx) {
return (UsersDAO) ctx.getBean("UsersDAO");
}
}




UsersId



package com.po;

/**
* UsersId generated by MyEclipse Persistence Tools
*/

public class UsersId implements java.io.Serializable {

// Fields

private String username;

private String userpass;

// Constructors

/** default constructor */
public UsersId() {
}

/** full constructor */
public UsersId(String username, String userpass) {
this.username = username;
this.userpass = userpass;
}

// Property accessors

public String getUsername() {
return this.username;
}

public void setUsername(String username) {
this.username = username;
}

public String getUserpass() {
return this.userpass;
}

public void setUserpass(String userpass) {
this.userpass = userpass;
}

public boolean equals(Object other) {
if ((this == other))
return true;
if ((other == null))
return false;
if (!(other instanceof UsersId))
return false;
UsersId castOther = (UsersId) other;

return ((this.getUsername() == castOther.getUsername()) || (this
.getUsername() != null
&& castOther.getUsername() != null && this.getUsername()
.equals(castOther.getUsername())))
&& ((this.getUserpass() == castOther.getUserpass()) || (this
.getUserpass() != null
&& castOther.getUserpass() != null && this
.getUserpass().equals(castOther.getUserpass())));
}

public int hashCode() {
int result = 17;
result = 37 * result
+ (getUsername() == null ? 0 : this.getUsername().hashCode());
result = 37 * result
+ (getUserpass() == null ? 0 : this.getUserpass().hashCode());
return result;
}

}



Users.hbm.xml



<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="com.po.Users" table="users" schema="dbo" catalog="usernews">
        <composite-id name="id" class="com.po.UsersId">
            <key-property name="username" type="java.lang.String">
                <column name="username" length="20" />
            </key-property>
            <key-property name="userpass" type="java.lang.String">
                <column name="userpass" length="20" />
            </key-property>
        </composite-id>
    </class>
</hibernate-mapping>




都是反向生成的怎么可能错!~
问题补充:
问题已经解决了,谢谢大家了   分给谁呢?
就给第一个帮我的吧        谢谢大家帮忙了
2008年6月24日 11:39

13个答案 按时间排序 按投票排序

0 0

采纳的答案

我也碰过一些这方面的错误


  1. 可能是你在设置外键的时候出问题。
  2. 还有就是你要把前一次生成的东西全部清掉,如hibernate.cfg.xml文件里面也有,
  3. 建议,一般自动生成的适当的修改一下,不要完全依赖工具。

2008年6月25日 10:01
0 0

能不能把所有关于你的关联文件及类文件共享啊?
你的这部分代码我觉得不能说明问题的所在

2008年6月27日 14:03
0 0

你这个问题是一个常见的问题,你可以有几种解决方案:
第一:就是把这个类文件和xml相对的文件全部删除后在重新生成。
第二:就是在原有的类中添加你又新添的字段的属性,和方法,在xml对应的文件中修改一个就OK,
第二种方法可能要求的东西比较多,如:你应该熟悉hibernate的这种机制就好做了。
第一种方法要求的不太多,直接重新做一次就OK。

2008年6月26日 20:19
0 0

用myeclipse反向工程就可以了

2008年6月25日 22:31
0 0

用的MyEclipse在新表反向工程生成。当将工程移到别处时,将catalog名字改,

2008年6月25日 20:28
0 0

看了一下lz的代码,Dao 没有实现一个接口,

SSH 中 Spring 整合 Hibernate 需要实现一个接口吧...

看看 夏昕的 <<Spring开发指南>> 中 Hiberante in Spring

2008年6月25日 13:38
0 0

如果是用myeclisp工具再次自动生成要注意要把相关联的表要一起选择,否则两表之间的关系就不能自动生成,只能自动生成单表相关代码
最好再次生成之前删除干净 DAO PO和相关配置文件

2008年6月24日 17:17
0 0

建议手动更改,把源码贴出来,大家也好帮你找到原因

2008年6月24日 16:41
0 0

把以前的删除干净  dao  po  还有那个配置文件都删掉

2008年6月24日 16:02
0 0

1、hibernate生成工具在生成过程中是可以有选择进行表的代码生成的,如果确定改变不大,可以不选择已生成过的表;
2、生成过程中如果有对已有对象的少量变更,可以手动修改;
3、原表对新表的关链关系可以手动增加。

2008年6月24日 15:30
0 0

你是用Myeclipse的生成工具吗?

2008年6月24日 12:38
0 0

对新表进行反向工程就可以了

2008年6月24日 12:32
0 0

生成DAO?怎么生成的?
建议你试用我的DAO框架。
http://jasongreen.iteye.com/blog/203478

你给的信息太少了,没法帮你分析阿

2008年6月24日 11:47

相关推荐

    如何使用Hibernate Tools生成Entity Bean

    如果你想使用注解配置,可以再次进行逆向工程,选择生成注解风格的Entity Bean。注解配置更简洁,更易于维护,但也需要确保你的Hibernate版本支持。 7. **验证与调试**:生成Bean后,检查代码是否符合预期,确保...

    hibernate主键生成策略详解

    ### hibernate主键生成策略详解 #### 一、assigned **assigned** 主键生成策略意味着主键的值是由外部程序负责生成的,并且在执行 `save()` 方法之前必须明确指定一个值。在这种策略下,Hibernate 不参与主键的...

    Hibernate自动生成

    《Hibernate自动生成:简化开发流程与提升效率》 在Java开发中,ORM(Object-Relational Mapping)框架如Hibernate极大地简化了数据库操作,使得开发者能够更专注于业务逻辑而不是底层的数据访问层。其中,...

    通过Hibernate Tool 来生成Java类和HBM文件

    同时,当数据库表结构发生变化时,只需要更新`hibernate.reveng.xml`文件,再次运行生成命令,即可快速同步Java代码,减少了因手动修改带来的错误可能。 总之,通过Hibernate Tool,开发者可以更加专注于业务逻辑的...

    hibernate反向生成数据库表.doc

    只需确保`hibernate.reveng.xml`和实体类的更改一致,再次运行`SchemaExport`即可。 总之,使用Hibernate的反向工程功能可以极大地简化数据库表的创建和维护,让开发者专注于业务逻辑,而不是底层的数据库操作。...

    hibernate eclipse插件生成dao样例

    标签中的“eclipse插件生成DAO样例”和“hibernate”再次确认了主题,强调了使用Eclipse工具来辅助开发Hibernate项目。 压缩包子文件的文件名中,“hibernateCH3.rar”可能包含的是某个教程或案例的第三章内容,...

    MyEclipse10.7由表自动生成Hibernate实体对象

    完成上述步骤后,再次切换至MyEclipse Database Explorer透视图视窗,选中目标表,例如R_DYNAMICTABLE,然后右键选择Hibernate Reverse Engineering,开始进行实体类的生成。在弹出的页面中,选择实体对象存放的路径...

    hibernate第一天笔记

    例如,可以使用`&lt;generator class="sequence"&gt;`定义序列生成器,或者使用`&lt;generator class="native"&gt;`让Hibernate自动选择适合当前数据库的主键生成策略,如自动递增。 在启动Hibernate时,我们需要创建`...

    myeclipse中hibernate的反向工程

    - **问题一**: 首次反向工程成功,但之后无法再次弹出反向工程配置对话框。解决方法为查找并删除工程目录下的.myhibernatedata文件中的reSettingsFile行。 - **问题二**: 实体类总是在默认包中生成,即使已经指定了...

    jsp+Spring+hibernate 博客系统

    业务逻辑可能涉及对数据库的操作,这时Hibernate作为ORM工具,会将Java对象转换为SQL语句执行,然后将结果再次转换回Java对象返回给控制器。最后,控制器将数据传递给JSP页面,由JSP生成响应并返回给用户。 **Web...

    HibernateSynchronizer的安装与使用

    通过自动生成 Hibernate 的配置文件(hibernate.cfg.xml)、映射文件(.hbm.xml)以及 Plain Object 类文件,HibernateSynchronizer 大大减少了手动编写这些文件的工作量,提高了开发效率。 安装 Hibernate...

    Hibernate servlet 和 JSP页面

    当用户提交修改或删除请求时,Servlet接收请求,更新数据库,然后返回确认信息,更新后的用户列表再次通过JSP呈现。 总结,Hibernate、Servlet和JSP的结合提供了完整的MVC(Model-View-Controller)架构,使得Java ...

    SH(struts2+Hibernate 3)简单实现注册模块

    再次提交表单时,服务器会检查这个token,如果发现已经存在相同的token,就拒绝处理,从而避免了因网络问题导致的重复提交。 在实际的项目中,这四个关键知识点将协同工作,以完成用户注册的功能。首先,用户在前端...

    Hibernate选择题(含答案).doc

    6. Hibernate提供了多种主键生成策略,如identity(由数据库自动增长,非所有数据库支持)、sequence(Oracle序列)、native(根据配置的方言自动选择策略)和assigned(手动分配ID)。 7. Hibernate中,对象的状态...

    Hibernate逆向工程-oracle示例借鉴.pdf

    而Hibernate的逆向工程功能更是能够帮助开发者快速生成与数据库表对应的Java实体类和映射文件,从而减少手动编写这些基础代码的工作量。本篇将详细介绍如何在Oracle数据库环境下,使用MyEclipse进行Hibernate逆向...

    HIBERNATE FOR NETBEANS 数据操作方法

    - 安装完成后,再次通过“更新中心”检查并安装Hibernate插件。这个过程可能需要联网,找到Hibernate插件,接受协议,等待下载并安装。 2. **配置Hibernate** - 创建新的Java项目或打开现有项目,然后添加...

    Hibernate 延迟加载剖析与代理模式应用

    在Hibernate中,当加载一个实体时,如果实体的某些属性被配置为延迟加载,那么Hibernate会生成一个代理对象来代替真实的集合或关联实体。这个代理对象包含了加载数据的方法。当应用程序尝试访问这些延迟加载的属性时...

    Hibernate练习题

    - 如果在事务中对同一个对象的同一属性进行了多次修改,提交时Hibernate只会生成一条UPDATE语句。所以,上述程序提交时只需提交1条UPDATE语句,答案是B) 1。 8. SessionFactory的理解: - A) 错误:...

    hibernate的乐观锁和悲观锁

    对于基于Java Web的应用而言,Hibernate作为一款流行的ORM框架,提供了多种手段来解决并发问题。其中,“乐观锁”和“悲观锁”是最为常见且有效的两种机制。本文将深入探讨这两种锁的原理及应用场景,帮助开发者更好...

    api.zip_hibernate api_hibernate api chm

    "hibernate_api" 和 "hibernate_api_chm" 这两个标签明确了文档的主题是关于Hibernate的API,同时再次强调了文档的格式是chm。 **压缩包子文件的文件名称列表:** 列表中的"api.chm"是压缩包内的唯一文件,即...

Global site tag (gtag.js) - Google Analytics