看起来问题相当简单,但我无法明确指出问题所在。所以这就是问题所在:
我想要的是将我的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();
答案 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();