环境:struts2、hibernate、spring
在用hibernate建表 要求实体文件要继承他的抽象类和实现java.io.Serializable 
(配置已经好了,就是写实体类和hbm.xml配置文件要怎么写  谁给个这样的代码参考下  要写注释哦  谢谢了) 

解决方案 »

  1.   

    用myeclipse执行hibernate反向工程,里面有个选项,是否生成抽象类。
    你的要求完全可以用工具做,你看看工具生成的就明白了。
      

  2.   

    MyEclipse 有自带反向工程的工具.只需要配置数据库JDBC即可.
      

  3.   

    我没想要什么工具生成啊  我这里有个项目 里面的实体都是abstract的  而且都继承java.io.Serializable    现在我想在这个项目里面在用hibernate生成一个表  java文件和.hbm.xml文件都写好了 但是重启tomcat时候报错  说不能读取我的。hbm.xml文件   我想可能是因为我现在写的和原来的不一样了   
      注:原来实体文件中有:AbstractUser.java、User.java、User.hbm.xml  我实在是看不明白啊 
      

  4.   

    把你的User.java、User.hbm.xml 发过来,我给你看看! 
      

  5.   


    mport java.util.Date;/**
     * AbstractTcard entity provides the base persistence definition of the Tcard
     * entity.
     * 
     * @author MyEclipse Persistence Tools
     */public abstract class AbstractTcard implements java.io.Serializable {
    private static final long serialVersionUID = 1L;

    private Integer fid;
    private String fuserId;
    private String fcardName;
    private Integer flabelId;
    private String fdrawXml;
    private String fdisk;
    private String fimgPath;
    private Date flastSaveTime;
    private Byte sendToWeb;
    private Integer sendToMail;
    private Integer sendToUser;
    private Integer sendToPost;
    private Byte sendToPic;
    private Integer deleted; // Constructors /** default constructor */
    public AbstractTcard() {
    } /** full constructor */
    public AbstractTcard(Integer fid, String fuserId, String fcardName,
    Integer flabelId, String fdrawXml, String fdisk, String fimgPath,
    Date flastSaveTime, Byte sendToWeb, Integer sendToMail,
    Integer sendToUser, Integer sendToPost, Byte sendToPic,
    Integer deleted) {
    this.fid = fid;
    this.fuserId = fuserId;
    this.fcardName = fcardName;
    this.flabelId = flabelId;
    this.fdrawXml = fdrawXml;
    this.fdisk = fdisk;
    this.fimgPath = fimgPath;
    this.flastSaveTime = flastSaveTime;
    this.sendToWeb = sendToWeb;
    this.sendToMail = sendToMail;
    this.sendToUser = sendToUser;
    this.sendToPost = sendToPost;
    this.sendToPic = sendToPic;
    this.deleted = deleted;
    } // Property accessors public Integer getFid() {
    return this.fid;
    } public void setFid(Integer fid) {
    this.fid = fid;
    } public String getFuserId() {
    return this.fuserId;
    } public void setFuserId(String fuserId) {
    this.fuserId = fuserId;
    } public String getFcardName() {
    return this.fcardName;
    } public void setFcardName(String fcardName) {
    this.fcardName = fcardName;
    } public Integer getFlabelId() {
    return this.flabelId;
    } public void setFlabelId(Integer flabelId) {
    this.flabelId = flabelId;
    } public String getFdrawXml() {
    return this.fdrawXml;
    } public void setFdrawXml(String fdrawXml) {
    this.fdrawXml = fdrawXml;
    } public String getFdisk() {
    return this.fdisk;
    } public void setFdisk(String fdisk) {
    this.fdisk = fdisk;
    } public String getFimgPath() {
    return this.fimgPath;
    } public void setFimgPath(String fimgPath) {
    this.fimgPath = fimgPath;
    } public Date getFlastSaveTime() {
    return this.flastSaveTime;
    } public void setFlastSaveTime(Date flastSaveTime) {
    this.flastSaveTime = flastSaveTime;
    } public Byte getSendToWeb() {
    return this.sendToWeb;
    } public void setSendToWeb(Byte sendToWeb) {
    this.sendToWeb = sendToWeb;
    } public Integer getSendToMail() {
    return this.sendToMail;
    } public void setSendToMail(Integer sendToMail) {
    this.sendToMail = sendToMail;
    } public Integer getSendToUser() {
    return this.sendToUser;
    } public void setSendToUser(Integer sendToUser) {
    this.sendToUser = sendToUser;
    } public Integer getSendToPost() {
    return this.sendToPost;
    } public void setSendToPost(Integer sendToPost) {
    this.sendToPost = sendToPost;
    } public Byte getSendToPic() {
    return this.sendToPic;
    } public void setSendToPic(Byte sendToPic) {
    this.sendToPic = sendToPic;
    } public Integer getDeleted() {
    return this.deleted;
    } public void setDeleted(Integer deleted) {
    this.deleted = deleted;
    }}
      

  6.   

    <hibernate-mapping schema="dbo" catalog="hxwdb">
        <class name="com.hxw.card.entity.Tcard" table="TCard" schema="dbo" catalog="hxwdb">
            <id name="fid" type="java.lang.Integer">
                <column name="fID" />
                <generator class="increment" />
            </id>
            
            <property name="fuserId" type="java.lang.String">
                <column name="fUserID" length="50" not-null="true" />
            </property>
            <property name="fcardName" type="java.lang.String">
                <column name="fCardName" length="50" not-null="true" />
            </property>
            <property name="flabelId" type="java.lang.Integer">
                <column name="fLabelID" not-null="true" />
            </property>
            <property name="fdrawXml" type="java.lang.String">
                <column name="fDrawXml" length="50" not-null="true" />
            </property>
            <property name="fdisk" type="java.lang.String">
                <column name="fDisk" length="50" not-null="true" />
            </property>
            <property name="fimgPath" type="java.lang.String">
                <column name="fImgPath" not-null="true" />
            </property>
            <property name="flastSaveTime" type="java.util.Date">
                <column name="fLastSaveTime" length="16" not-null="true" />
            </property>
            <property name="sendToWeb" type="java.lang.Byte">
                <column name="sendToWeb" not-null="true" />
            </property>
            <property name="sendToMail" type="java.lang.Integer">
                <column name="sendToMail" not-null="true" />
            </property>
            <property name="sendToUser" type="java.lang.Integer">
                <column name="sendToUser" not-null="true" />
            </property>
            <property name="sendToPost" type="java.lang.Integer">
                <column name="sendToPost" not-null="true" />
            </property>
            <property name="sendToPic" type="java.lang.Byte">
                <column name="sendToPic" not-null="true" />
            </property>
            <property name="deleted" type="java.lang.Integer">
                <column name="deleted" not-null="true" />
            </property>
        </class>
    </hibernate-mapping>
      

  7.   


    import java.util.Date;/**
     * Tcard entity.
     * 
     * @author MyEclipse Persistence Tools
     */
    public class Tcard extends AbstractTcard implements java.io.Serializable { private static final long serialVersionUID = 1L;
    private TcardWeb tcardWeb; /** default constructor */
    public Tcard() {
    } /** full constructor */
    public Tcard(Integer fid, String fuserId, String fcardName,
    Integer flabelId, String fdrawXml, String fdisk, String fimgPath,
    Date flastSaveTime, Byte sendToWeb, Integer sendToMail,
    Integer sendToUser, Integer sendToPost, Byte sendToPic,
    Integer deleted,TcardWeb tcardWeb) {
    super(fid, fuserId, fcardName, flabelId, fdrawXml, fdisk, fimgPath,
    flastSaveTime, sendToWeb, sendToMail, sendToUser, sendToPost,
    sendToPic, deleted);
    this.tcardWeb=tcardWeb;
    } public TcardWeb getTcardWeb() {
    return tcardWeb;
    } public void setTcardWeb(TcardWeb tcardWeb) {
    this.tcardWeb = tcardWeb;
    }}
      

  8.   

    都是普通类型属性没有什么难的!<?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping>
      <class table="表名" name="包.AbstractTcard">
        <id name="fid" column="字段">
          <generator class="native"/>
        </id>
    <property name="fuserId" length="长度" column="字段"/>
    <property name="fcardName" length="长度" column="字段"/>
    <property name="flabelId" column="字段"/>
    <property name="fdrawXml" length="长度" column="字段"/>
    <property name="fdisk" length="长度" column="字段"/>
    <property name="fimgPath" length="长度" column="字段"/>
    <property name="flastSaveTime" column="字段"/>
    <property name="sendToWeb" column="字段"/>
    <property name="sendToMail" column="字段"/>
    <property name="sendToUser" column="字段"/>
    <property name="sendToPost" column="字段"/>
    <property name="sendToPic" column="字段"/>
    <property name="deleted" column="字段"/>  </class>
    </hibernate-mapping>
      

  9.   

     但是重启tomcat时候报错
    报的什么错误!把异常信息发过来
      

  10.   


    009-09-10 03:54 ERROR o.s.w.c.ContextLoader - Context initialization failed
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.interceptor.TransactionInterceptor#0': Cannot resolve reference to bean 'txManager' while setting bean property 'transactionManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'txManager' defined in class path resource [applicationContext.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.InvalidMappingException: Could not parse mapping document from file E:\Tomcat 6.0\webapps\hxw\WEB-INF\classes\com\hxw\card\entity\OilMessage.hbm.xml
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275) [spring-beans-2.5.6.jar:2.5.6]
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104) [spring-beans-2.5.6.jar:2.5.6]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245) [spring-beans-2.5.6.jar:2.5.6]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010) [spring-beans-2.5.6.jar:2.5.6]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472) [spring-beans-2.5.6.jar:2.5.6]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) [spring-beans-2.5.6.jar:2.5.6]
    at java.security.AccessController.doPrivileged(Native Method) [na:1.6.0_13]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) [spring-beans-2.5.6.jar:2.5.6]
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) [spring-beans-2.5.6.jar:2.5.6]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) [spring-beans-2.5.6.jar:2.5.6]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) [spring-beans-2.5.6.jar:2.5.6]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) [spring-beans-2.5.6.jar:2.5.6]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) [spring-beans-2.5.6.jar:2.5.6]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429) [spring-beans-2.5.6.jar:2.5.6]
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728) [spring-context-2.5.6.jar:2.5.6]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380) [spring-context-2.5.6.jar:2.5.6]
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255) [spring-web-2.5.6.jar:2.5.6]
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199) [spring-web-2.5.6.jar:2.5.6]
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45) [spring-web-2.5.6.jar:2.5.6]
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843) [catalina.jar:na]
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4342) [catalina.jar:na]
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791) [catalina.jar:na]
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771) [catalina.jar:na]
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525) [catalina.jar:na]
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:926) [catalina.jar:na]
    at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:889) [catalina.jar:na]
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492) [catalina.jar:na]
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149) [catalina.jar:na]
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311) [catalina.jar:na]
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) [catalina.jar:na]
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) [catalina.jar:na]
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) [catalina.jar:na]
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) [catalina.jar:na]
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) [catalina.jar:na]
    at org.apache.catalina.core.StandardService.start(StandardService.java:516) [catalina.jar:na]
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) [catalina.jar:na]
    at org.apache.catalina.startup.Catalina.start(Catalina.java:578) [catalina.jar:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [na:1.6.0_13]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [na:1.6.0_13]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [na:1.6.0_13]
    at java.lang.reflect.Method.invoke(Method.java:597) [na:1.6.0_13]
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) [bootstrap.jar:na]
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) [bootstrap.jar:na]
      

  11.   

    这个项目他连hibernate.cfg.xml都没有 直接注入spring的   我感觉他用的方法就跟1楼说的一样  用了反向工程 但我不知道怎么用反向工程啊 
      

  12.   

    Could not parse mapping document from file E:\Tomcat 6.0\webapps\hxw\WEB-INF\classes\com\hxw\card\entity\OilMessage.hbm.xml是这个OilMessage.hbm.xml文件有错!
    而不是AbstractUser.java、User.java、User.hbm.xml  
    自己好好看看异常堆栈信息吧!
      

  13.   

    哎  大哥 上面我跟你说了是我的报错啊    我就想知道如果我要按照他那种方式写要怎么写才不会出错 我看不明白他这样写的用意  这是最主要的哦   为什么要实现java.io.Serializable  干吗要弄个抽象类来 直接写个实体的不久可以了么  
    我写了一个实体类  没用抽象类和实现java.io.Serializable 接口  。hbm。xml文件和你的写法一样  结果报错   不明白哦