2012-05-15 3 views
0

Я написал отображение, как, как показано ниже:отображение зимуют создать таблицу

<hibernate-mapping auto-import="true" default-lazy="false"> 
    <class name="com.saman.entity.hibernate.EmployeeEntity" 
      table="Employee" optimistic-lock="version"> 

     <id name="id" type="java.lang.Integer" > 
      <column name="Id" /> 
      <generator class="identity"/> 
     </id> 
     <timestamp name="version" source="db"/> 
     <property name="firstName"> 
      <column name="FirstName" sql-type="nvarchar(300)"/> 
     </property> 
     <property name="lastName"> 
      <column name="LastName" sql-type="nvarchar(300)"/> 
     </property> 
     <property name="employeeType"> 
      <column name="EmployeeType" sql-type="nvarchar(300)"/> 
     </property> 
     <!-- 
     <set name="shifts" table="Shifts" inverse="true" lazy="true" fetch="select"> 
      <key> 
       <column name="Id" not-null="true"/> 
      </key> 
      <one-to-many class="com.saman.entity.hibernate.ShiftEntity"/> 
     </set> 
     --> 
     <properties name="u1" unique="true"> 
      <property name="firstName"/> 
      <property name="lastName"/> 
      <property name="employeeType"/> 
     </properties> 

    </class> 
</hibernate-mapping> 

когда я запускаю мое приложение возникает ошибка, как показано ниже:

2012-05-15 17: 12: 38,651 - WARN - Неудачная инструкция схемы: create table Employee (Id integer not null auto_increment, version datetime not null, FirstName nvarchar (300), LastName nvarchar (300), EmployeeType nvarchar (300), первичный ключ (Id), уникальный (firstName, lastName , employeeType)) com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: указанный ключ был слишком длинным; длина ключа составляет не более 1000 байт в sun.reflect.NativeConstructorAccessorImpl.newInstance0 (Native Method) в sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:39) в sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance (Constructor.java:513) at com.mysql.jdbc.Util.handleNewInstance (Util.java:411) at com.mysql.jdbc.Util.getInstance (Util) .java: 386) на com.mysql.jdbc.SQLError.createSQLException (SQLError.java:1052) на com.mysql.jdbc.MysqlIO.checkErrorPacket (MysqlIO.java:3609) в com.mysql.jdbc.MysqlIO .checkErrorPacket (MysqlIO.java:3541) at co m.mysql.jdbc.MysqlIO.sendCommand (MysqlIO.java:2002) at com.mysql.jdbc.MysqlIO.sqlQueryDirect (MysqlIO.java:2163) at com.mysql.jdbc.ConnectionImpl.execSQL (ConnectionImpl.java: 2618) at com.mysql.jdbc.StatementImpl.executeUpdate (StatementImpl.java:1749) at com.mysql.jdbc.StatementImpl.executeUpdate (StatementImpl.java:1666) at com.mchange.v2.c3p0.impl. NewProxyStatement.executeUpdate (NewProxyStatement.java:64) на org.springframework.orm.hibernate3.LocalSessionFactoryBean.executeSchemaStatement (LocalSessionFactoryBean.java:1115) в org.springframework.orm.hibernate3.LocalSessionFactoryBean.executeSchemaScript (LocalSessionFactoryBean.java:1087) на org.springframework.orm.hibernate3.LocalSessionFactoryBean $ 1.doInHibernate (LocalSessionF actoryBean.java:942) на org.springframework.orm.hibernate3.HibernateTemplate.doExecute (HibernateTemplate.java:406) в org.springframework.orm.hibernate3.HibernateTemplate.execute (HibernateTemplate.java:339) в орг. springframework.orm.hibernate3.LocalSessionFactoryBean.updateDatabaseSchema (LocalSessionFactoryBean.java:935) на org.springframework.orm.hibernate3.LocalSessionFactoryBean.afterSessionFactoryCreation (LocalSessionFactoryBean.java:883) в org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet (AbstractSessionFactoryBean.java:213) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods (AbstractAutowireCapableBeanFactory.java:1477) at org.springframework.beans.factory.support.AbstractAut owireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1417) на org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:519) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean (AbstractAutowireCapableBeanFactory. Java: 456) в org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject (AbstractBeanFactory.java:291) в org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:222) на org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:288) на org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:190) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons (DefaultListableBeanFactory.java:563) на org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext.java:895) в org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:425) на org.springframework.context.support.ClassPathXmlApplicationContext. (ClassPathXmlApplicationContext.java:139) на org.springframework.context.support.ClassPathXmlApplicationContext. (ClassPathXmlApplicationContext.java:83) в Main.main (Main.java:18)

В чем проблема с этим?

Я использую mysql и запускаю его на MAMP.

+1

сообщение полной трассировки стека, и после код, вызывающий выброс этого исключения. –

+0

Я изменил его: D – saman

ответ

2

Указанный ключ был слишком длинным; максимальная длина ключа составляет 1000 байтов

Эта ошибка означает, что ваш уникальный индекс (firstName, lastName, employeeType) составляет более 1000 байтов, что является максимальным. Начиная с MySQL документации

"UTF-8 encoding of the Unicode character set using one to three bytes per character" 

Таким образом, вы можете видеть, что у вас есть три поля 300 длины, так что вы можете иметь индекс размером 300 * 3 * 3 = 2700> 1000

2

Известная проблема с двигателем MyISAM. Вы можете попробовать link, чтобы изменить двигатель на InnoDB:

Смежные вопросы