Hibernate映射错误

zr_dixuexiongying 2008-02-22 06:35:49
请问我用hibernate映射数据库,抱错,希望大家帮我分析一下:包错信息如下:

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
org.hibernate.MappingException: Unknown entity: ch03.hibernate.User
at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:514)
at org.hibernate.impl.SessionImpl.getEntityPersister(SessionImpl.java:1302)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:89)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:186)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:175)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:530)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:518)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:514)
at ch03.hibernate.Test.main(Test.java:19)

以下是测试程序

User.java

package ch03.hibernate;

public class User
{
private int id;
private String username;
private String password;
private String email;

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

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

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

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

public void setPassword(String password)
{
this.password = password;
}

public String getPassWord()
{
return this.password;
}

public void setEmail(String email)
{
this.email = email;
}

public String getEmail()
{
return this.email;
}

}

测试类 Test.java

package ch03.hibernate;

import org.hibernate.*;
import org.hibernate.cfg.*;


public class Test
{
public static void main(String[] args)
{
try
{
SessionFactory sf = new Configuration().configure().buildSessionFactory();
Session session = sf.openSession();
Transaction tx = session.beginTransaction();
User user = new User();
user.setUserName("wujunjie");
user.setPassword("123");
session.save(user);
tx.commit();
session.close();
}
catch(HibernateException e)
{
e.printStackTrace();
}
}

}

以下是几个配置文件:

hibernate.cfg.xml

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>

<session-factory>
<property name="connection.username">scott</property>
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:ORAC</property>
<property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>
<property name="myeclipse.connection.profile">OracleConnection</property>
<property name="connection.password">tiger</property>
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>

</session-factory>

</hibernate-configuration>

用户配置文件 User.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">

<hibernate-mapping>
<class name="ch03.hibernate.User" table="Myusertable">
<id name="id">
<generator class="increment"/>
</id>
<property name="username"/>
<property name="password"/>
<property name="email"/>
</class>
</hibernate-mapping>

另外还有几个问题:
<property name="username"/>
<property name="password"/>
<property name="email"/>
这里面name的名字是否要和类里面的字段名一模一样,与数据库的也是否要求一致.

还有到了最后一步怎么和类映射!也就是说我将表已经导人到了工程里面,最后映射表不只到怎么弄望大家赐教.版本 MyEclipse 5.0.1 因为原来用的老版本在表那直接点右键 Create Hibernate Mapping,但是现在这个版本我却不知道怎么直接映射,有谁知道吗?

...全文
118 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
abs1285 2008-03-23
  • 打赏
  • 举报
回复
catalog 这又是什么标识?
guoqiangone 2008-02-23
  • 打赏
  • 举报
回复
MyEclipse 5.5 在表那直接点右键hibernate Reverse Engineering
睿音 2008-02-22
  • 打赏
  • 举报
回复
我已经好久不用myeclipse了。最后一点无能为力了。呵呵
睿音 2008-02-22
  • 打赏
  • 举报
回复
> 另外还有几个问题:
> <property name="username"/>
> <property name="password"/>
> <property name="email"/>
> 这里面name的名字是否要和类里面的字段名一模一样,与数据库的也是否要求一致.

我给你举个例子一个

表userInfo(你这里用user是个隐患,user在sql中是关键字。)
有主键u_id,姓名:u_name.
对应的Object就是(按照习惯书写)

类UserInfo

class UserInfo{
private long uId;

private String uName;

get // set ....
}


配置文件userInfo.hbm.xml

<hibernate-mapping>
<class name="XXX.XXX.UserInfo" table="userInfo">
<id name="uId" type="java.lang.Long">
<column name="u_id" />
<generator class="native" />
</id>
<property name="uName" type="java.lang.String">
<column name="u_name" length="10" />
</property>
</hibernate-mapping>


对应的看下。你就清楚了
睿音 2008-02-22
  • 打赏
  • 举报
回复
第一个问题:
hibernate.cfg.xml 中没有配置hbm.xml的位置

<mapping resource="XXX/XXX/User.hbm.xml" />

67,513

社区成员

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

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