[100分]求救Hibernate映射配置问题!
我是用了Eclipse3.1 + MyEclipse4.1让Hibernate插件自动创建映射文件和类文件。
但是不知道为什么老是抱错:
org.hibernate.DuplicateMappingException: Duplicate collection role mapping chat.hibernate.pojo.User.chatDatas
具体配置:
////////////////////////////////////////////////////////////////////
我的数据库建表语句如下:
create table USER(
idnumber(10) primary key,
name varchar2(30) not null,
passwordvarchar2(30)null
);
create table CHAT_DATA(
idnumber(10) primary key,
useridnumber(10)references USER(id),
datavarchar2(4000)null,
timedate
);
////////////////////////////////////////////////////////////////////////////////
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 "> vickcy </property>
<property name= "connection.url "> jdbc:pointbase:server://localhost/chat </property>
<property name= "dialect "> org.hibernate.dialect.PointbaseDialect </property>
<property name= "myeclipse.connection.profile "> chat </property>
<property name= "connection.password "> vickcy </property>
<property
name= "connection.driver_class "> com.pointbase.jdbc.jdbcUniversalDriver </property>
<mapping resource= "chat/hibernate/pojo/User.hbm.xml "> </mapping>
<mapping resource= "chat/hibernate/pojo/ChatData.hbm.xml "> </mapping>
</session-factory>
</hibernate-configuration>
/////////////////////////////////////////////////////////////////////////////////////////
User.hbm.xml 文件配置如下:
<!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 - Hibernate Tools
-->
<hibernate-mapping>
<class name= "chat.hibernate.pojo.User " table= "USER ">
<id name= "id " type= "java.lang.Long ">
<column name= "ID " precision= "10 " scale= "0 " />
<generator class= "increment " />
</id>
<property name= "name " type= "java.lang.String ">
<column name= "NAME " length= "30 " not-null= "true " />
</property>
<property name= "password " type= "java.lang.String ">
<column name= "PASSWORD " length= "30 " />
</property>
<set name= "chatDatas " inverse= "true ">
<key>
<column name= "USERID " precision= "10 " scale= "0 " />
</key>
<one-to-many class= "chat.hibernate.pojo.ChatData " />
</set>
</class>
</hibernate-mapping>
////////////////////////////////////////////////////////////////////////////
ChatData.hbm.xml 文件配置如下:
<?xml version= "1.0 "?>
<!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 - Hibernate Tools
-->
<hibernate-mapping>
<class name= "chat.hibernate.pojo.ChatData " table= "CHAT_DATA ">
<id name= "id " type= "java.lang.Long ">
<column name= "ID " precision= "10 " scale= "0 " />
<generator class= "increment " />
</id>
<many-to-one name= "user " class= "chat.hibernate.pojo.User " fetch= "select ">
<column name= "USERID " precision= "10 " scale= "0 " />
</many-to-one>
<property name= "data " type= "java.lang.String ">
<column name= "DATA " length= "4000 " />
</property>
<property name= "time " type= "java.util.Date ">
<column name= "TIME " length= "10 " />
</property>
</class>
</hibernate-mapping>
[解决办法]
mark
[解决办法]
找了半天没看到你的chat.hibernate.pojo.User类
另外检查路径
[解决办法]
路径错了把。
[解决办法]
你用的什么数据库?
Connection URL 检查有没有错。
路径,检查路径,比较敏感的。
用MyEclipse 的Hibernate支持感觉不是很好,用另外一个开源的Hibernate S....后面不记得怎么拼了。
[解决办法]
不能创建 User表吧? Pointbase 没用过.
不过 User 在很多数据库中都是关键字
Oracle / SQLSERVER 中 create table User 会报错的,
如果要创建 User 表, 要加双引号, 但这样不方便写代码.
你在 pointbase 中测试下
建议换个名字, 比如 Usr
[解决办法]
1.Could not read mappings from resource: chat/hibernate/pojo/Usr.hbm.xml
这是不能读取的意思,到web-info/classes下看一下你的文件是不是没编译
2.hibernate.cfg.xml中的mapping路径是否正确
[解决办法]
chat.hibernate.pojo.Usr.chatDatas这是你的hibernate-mapping文件;
chat.hibernate.pojo.User.chatDatas这是你在hibernate.cfg.xml中的配制.
两个不一样啊,到底是User还是Usr,配制的仔细检查下,一般都是那个地方没注意写错了,不会有太大问题的.