类未在hibernate中映射

时间:2017-06-12 15:41:35

标签: java oracle hibernate oracle10g hibernate-mapping

看起来问题相当简单,但我无法明确指出问题所在。所以这就是问题所在:

我想要的是将我的DTO类映射到ORACLE DB中的表。

以下是我班级的一次拍摄

P.S:我的表只有一列符合要求,是主键,任何时候都包含sysdate。奇怪,但它就是它

myDTOClass.java

package com.cisco.dto;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Entity;
import javax.persistence.Table;

@Entity
@Table(name = "my_table_in_oracle_db")
public class myDTOClass{

    @Id
    @Column(name ="LASTRUNDATE")
    private Date lastRunDate;

    public Date getLastRunDate() {
        return lastRunDate;
    }

    public void setLastRunDate(Date lastRunDate) {
        this.lastRunDate = lastRunDate;
    }
}

正如您所看到的,我使用了@entity的hibernate注释,而且我还有@Id,所以这不是问题。

请放心,我的数据库中有一个提到的表格,表格中的表格拼写绝对正确。

现在我认为我的hibernate.cfg.xml可能存在连接问题。但是我的所有其他表格及其相应的DTO类都像黄油一样流畅。

以下是hibernate.cfg.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration SYSTEM 
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>
        <property name="hibernate.dialect">
            org.hibernate.dialect.Oracle10gDialect
        </property>
        <property name="hibernate.connection.driver_class">
            oracle.jdbc.OracleDriver
        </property>

        <!-- Assume test is the database name -->
        <property name="hibernate.connection.url">
            jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<host_name>)(PORT=1234))(CONNECT_DATA=(SID=*SID*)(Server=Dedicated)))
        </property>
        <property name="hibernate.connection.username">
            *my_user_name*
        </property>
        <property name="hibernate.connection.password">
            *my_password*
        </property>
        <property name="connection.pool_size">
            1
        </property>

        <property name="show_sql">
            true
        </property>
        <property name="cache.provider_class">
            true
        </property>
        <property name="hbm2ddl.auto">
            update
        </property>

        <!-- List of XML mapping files -->
        <!--<mapping class="com.cisco.learnhibernate.dto.UserDetails" />-->

    </session-factory>
</hibernate-configuration>

我得到的错误是:  当我尝试拨打以下区块时org.hibernate.hql.internal.ast.QuerySyntaxException: myDTOClass is not mapped

Session session = getSessionFactory().openSession();
session.beginTransaction();
session.createQuery("delete from myDTOClass").executeUpdate();

session.getTransaction().commit();
session.close();

1 个答案:

答案 0 :(得分:0)

你做得很好。但是你忘了将bean类添加到configuration.before,使用你应该配置它的bean类,并在数据库中为它创建一个模式。

由于您正在使用注释,请使用此功能。

    Configuration cfg = new Configuration().configure();//this will configure the hibernate cfg.xml
   cfg.addAnnotatedClass(myDTOClass.class);//this will create schemas in the DB
Session session=cfg.buildSessionFactory().openSession();
Transaction tr=session.beginTransaction();
session.createQuery("delete from myDTOClass").executeUpdate();
session.getTransaction().commit();
session.close();