主题:求助:hibernate映射继承关系的问题
大家好,我刚刚接触hibernate,在我的工程中应用得还算顺利,就是在映射继承关系的时候,总是出问题.
在我的mysql数据库中有一个article表,其中有以下字段:
article_id article_title article_content article_author article_type
其中article_type用来区分不同类型的文章
我采用的映射方式是: 继承关系的根类对应一个表
父类Article有一个子类SchoolAarticle,属性字段如下:
article_id article_title article_content article_author
父类的映射文件如下(概要)
<class name="Article" table="article" catalog="new" >
<id name="article_id" type="int">
<generator class="native"></generator>
</id>
<discriminator column="article_type" type="string"/>
<property name="article_author" type="string"/>
<property name="article_title" type="string"/>
<property name="article_content" type="text"/>
<subclass name="SchoolArticle" discriminator-value="school"></subclass>
</class>
hibernate.cfg.xml文件配置如下(概要):
tables是我的包名:
<session-factory>
<mapping resource="tables/Article.hbm.xml"/>
</session-factory>
pojo类都已经写好,其他的也没什么问题,由于子类没有单独的映射文件,
因此按照书上说的,在初始化hibernate时,需要向Configuration对象中加入Article类,以下是测试程序的main()方法(概要):
//数据我已经在数据库中添加
public static void main(String ss[]) throws UnsupportedEncodingException
{
Session session = null;
Configuration config = new Configuration();
config = config.configure();
config.addClass(Article.class);
SessionFactory factory = config.buildSessionFactory();
session = factory.openSession();
Object o = null;
String hql = "from ClassArticle as t where t.id=?";
Query q = session.createQuery(hql);
q.setInteger(0,1);
List l = q.list();
Iterator iter = l.iterator();
SchoolArticle ca = (SchoolArticle)iter.next();
System.out.println(ca.getArticle_id()+" "+new String (ca.getArticle_author().getBytes("ISO-8859-1"),"gb2312"));
}
运行后总是出现如下异常:
Exception in thread "main" org.hibernate.MappingException: Could not read mappings from resource: tables/Article.hbm.xml
Caused by: org.hibernate.DuplicateMappingException: Duplicate class/entity mapping tables.SchoolArticle
已经都好几天了,请大家帮帮我, 非常感谢!!
在我的mysql数据库中有一个article表,其中有以下字段:
article_id article_title article_content article_author article_type
其中article_type用来区分不同类型的文章
我采用的映射方式是: 继承关系的根类对应一个表
父类Article有一个子类SchoolAarticle,属性字段如下:
article_id article_title article_content article_author
父类的映射文件如下(概要)
<class name="Article" table="article" catalog="new" >
<id name="article_id" type="int">
<generator class="native"></generator>
</id>
<discriminator column="article_type" type="string"/>
<property name="article_author" type="string"/>
<property name="article_title" type="string"/>
<property name="article_content" type="text"/>
<subclass name="SchoolArticle" discriminator-value="school"></subclass>
</class>
hibernate.cfg.xml文件配置如下(概要):
tables是我的包名:
<session-factory>
<mapping resource="tables/Article.hbm.xml"/>
</session-factory>
pojo类都已经写好,其他的也没什么问题,由于子类没有单独的映射文件,
因此按照书上说的,在初始化hibernate时,需要向Configuration对象中加入Article类,以下是测试程序的main()方法(概要):
//数据我已经在数据库中添加
public static void main(String ss[]) throws UnsupportedEncodingException
{
Session session = null;
Configuration config = new Configuration();
config = config.configure();
config.addClass(Article.class);
SessionFactory factory = config.buildSessionFactory();
session = factory.openSession();
Object o = null;
String hql = "from ClassArticle as t where t.id=?";
Query q = session.createQuery(hql);
q.setInteger(0,1);
List l = q.list();
Iterator iter = l.iterator();
SchoolArticle ca = (SchoolArticle)iter.next();
System.out.println(ca.getArticle_id()+" "+new String (ca.getArticle_author().getBytes("ISO-8859-1"),"gb2312"));
}
运行后总是出现如下异常:
Exception in thread "main" org.hibernate.MappingException: Could not read mappings from resource: tables/Article.hbm.xml
Caused by: org.hibernate.DuplicateMappingException: Duplicate class/entity mapping tables.SchoolArticle
已经都好几天了,请大家帮帮我, 非常感谢!!