解决 An AnnotationConfiguration instance is required to use

iazhou 7年前

最近学习Hibernate,尝试使用XML和Annotation两种方式进行POJO类的映射,有两个类:Student和Teacher,前者使用XML文件来映射类和属性,后者使用Annotation映射类和属性,并放在一个工程下。Hibernate的配置文件——hibernate.cfg.xml位于src目录下。在单元测试时,执行下面代码时,会产生异常。
Configuration cfg = new Configuration();
SessionFactory sf = cfg.configure().buildSessionFactory();
</blockquote>
异常信息为:org.hibernate.MappingException: An AnnotationConfiguration instance is required to use <mapping class="***"/>
原因分析:

Hibernate配置文件中,若带有<mapping class="com.jjj.Student"/>,则说明映射类时,采用了Annotation方式。在初始化Configuation时,应使用AnnoationConfiguration,代码如下:

Configuration cfg = new AnnoationConfiguration();
SessionFactory sf = cfg.configure().buildSessionFactory();

</blockquote>

如果,你在映射时,未使用过Annotation,则使用Configuration。

附:若要修改MySQL的字符集,最直接的方式,是重新配置MySQL,MySQL的安装目录下有个文件

MySQL\MySQL Server 5.1\bin\MySQLInstanceConfig

执行下该文件,在“字符集设置”里选择你默认编码,一般是utf-8,或者是GBK。此外,需要注意源程序的编码也要与数据库一致。