Java 使用MySQL 5.1配置Hibernate 4时出现问题

Java 使用MySQL 5.1配置Hibernate 4时出现问题,java,mysql,hibernate,junit,Java,Mysql,Hibernate,Junit,有没有人有成功使用hibernate 4和MySQL 5.1的hibernate.cfg.xml配置文件的例子?我有一个Maven(v3.0.3)web项目,当我运行JUnit测试时,测试失败,出现异常,即使表USERS存在 org.hibernate.AnnotationException: @org.hibernate.annotations.Table references an unknown table: USERS at org.hibernate.cfg.annotatio

有没有人有成功使用hibernate 4和MySQL 5.1的hibernate.cfg.xml配置文件的例子?我有一个Maven(v3.0.3)web项目,当我运行JUnit测试时,测试失败,出现异常,即使表USERS存在

org.hibernate.AnnotationException: @org.hibernate.annotations.Table references an unknown table: USERS
    at org.hibernate.cfg.annotations.EntityBinder.processComplementaryTableDefinitions(EntityBinder.java:875)
    at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:710)
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:3406)
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3360)
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1334)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1724)
    at com.myco.eventmaven.dao.UsersDaoImpl.<init>(UsersDaoImpl.java:27)
    at com.myco.eventmaven.dao.UsersDaoImplTest.setUpStaticVars(UsersDaoImplTest.java:19)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
    at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:53)
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123)
    at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164)
    at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110)
    at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175)
    at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107)
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68)
这是我的hibernate.cfg.xml文件

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

<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/eventmaven</property>
<property name="hibernate.connection.username">eventmaven</property>
<property name="hibernate.connection.password">password</property>
<property name="hibernate.connection.pool_size">10</property>
<property name="show_sql">true</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>

<mapping class="com.myco.eventmaven.domain.Registration" />

</session-factory>
</hibernate-configuration>

谢谢,-Dave

您的连接没有问题-您的日志很清楚:没有表用户。 为什么要在另一个文件中使用@Table(appliesTo=“USERS”),至少在其实体定义之前定义它会更好

hibernate映射文件中没有表用户


您的连接没有问题-您的日志很清楚:没有表用户。 为什么要在另一个文件中使用@Table(appliesTo=“USERS”),至少在其实体定义之前定义它会更好

hibernate映射文件中没有表用户


您可能在区分大小写方面有问题,使用某些操作系统,MySQL中的表名可能区分大小写。来自(我的重点):

在MySQL中,数据库对应于数据中的目录 目录数据库中的每个表至少对应一个 数据库目录中的文件(可能更多,具体取决于 存储引擎)。触发器也对应于文件。因此,, 底层操作系统的大小写敏感度起到了一定的作用 数据库、表和触发器名称区分大小写这个 表示此类名称在Windows中不区分大小写,但区分大小写 大多数Unix版本都很敏感。Mac OS是一个显著的例外 十、 它是基于Unix的,但使用默认的文件系统类型(HFS+) 不区分大小写。但是,Mac OS X也支持UFS卷, 它们与任何Unix上一样区分大小写。见第1.8.4节, “标准SQL的MySQL扩展”。
小写字母表的名称
系统变量还影响服务器处理标识符大小写的方式 敏感度


因此,检查表名,检查它们最初是如何创建的。链接页面上有许多关于如何处理此问题的选项。

您可能在区分大小写方面有问题,使用某些操作系统,MySQL中的表名可能区分大小写。来自(我的重点):

在MySQL中,数据库对应于数据中的目录 目录数据库中的每个表至少对应一个 数据库目录中的文件(可能更多,具体取决于 存储引擎)。触发器也对应于文件。因此,, 底层操作系统的大小写敏感度起到了一定的作用 数据库、表和触发器名称区分大小写这个 表示此类名称在Windows中不区分大小写,但区分大小写 大多数Unix版本都很敏感。Mac OS是一个显著的例外 十、 它是基于Unix的,但使用默认的文件系统类型(HFS+) 不区分大小写。但是,Mac OS X也支持UFS卷, 它们与任何Unix上一样区分大小写。见第1.8.4节, “标准SQL的MySQL扩展”。
小写字母表的名称
系统变量还影响服务器处理标识符大小写的方式 敏感度


因此,检查表名,检查它们最初是如何创建的。链接页面上有许多关于如何处理此问题的选项。

表确实存在,但我使用的注释是错误的。我需要使用注释

@Table(name = "USERS")

其中@Table是从import javax.persistence.Table;导入的;。之前@Table是从org.hibernate包导入的,这会把事情搞砸。

表确实存在,但我使用的注释是错误的。我需要使用注释

@Table(name = "USERS")
其中@Table是从import javax.persistence.Table;导入的;。在@Table从org.hibernate包导入之前,它把事情搞砸了。

1)您使用的是unix吗,2)它在JUnit之外工作吗/当您从Eclipse/在您的Web应用程序中运行测试时,也就是说,问题只是maven,还是无处不在?1)您使用的是unix,2)当您在Web应用程序中运行Eclipse/中的测试时,它是否在JUnit/之外工作,也就是说,问题只是maven的问题,还是无处不在?