我编写了一个映射,如下所示:
<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--失败的模式语句:创建表雇员(Id整数不为空auto_increment,版本日期时间不为空,FirstName nvarchar(300),LastName nvarchar(300),雇员类型nvarchar(300),主键(Id),唯一(firstName,lastName,雇员类型)com.mysql.jdbc.exceptions.jdbc4。指定的密钥太长;最大密钥长度为1000字节sun.reflect.NativeConstructorAccessorImpl.newInstance0(本地方法)在sun.reflect.NativeConstructorAccessorImpl.new实例(NativeConstructorAccessorImpl.java:39)在sun.reflect.mpl.new实例(mpl.java:27)在java.lang.reflect.Constructor.new实例(Constructor.java:513)在com.mysql.jdbc.Util.handleNewInstance(Util.java:411)在com.mysql.jdbc.Util.get实例(Util.java:386)com.mysql.jdbc.SQLError.createSQLExc0019(SQLErrr. java: 1052)at com. mysql. jdbc。在com. mysql. jdbc.在com. mysql. jdbc.在com. mysql. jdbc.mysqlIO. sqlQueryDirect(MysqlIO. java: 2163)在com. mysql. jdbc。在com. mysql. jdbc.在com. mysql. jdbc.在com. mChange. v2. c3p0. implified上的StatementInp.在org. springframework. orm. hibernate3上更新(NewProxyState. java: 64)。在org. springframework. orm. hibernate3上的LocalSessionFactoryBean.执行模式声明(LocalSessionFactoryBean. java: 1115)。LocalSessionFactoryBean.执行模式脚本(LocalSessionFactoryBean. java: 1087)在org. springframework. orm. hibernate3。LocalSessionFactoryBean1美元. doInHibernate(LocalSessionFactoryBean. java: 942)在org. springframework. orm. hibernate3。HibernateTemplate. doExecute(HibernateTemplate. java: 406)at org. springframework. orm. hibernate3.在org. springframework. orm. hibernate3上执行(HibernateTemplate. java: 339)。LocalSessionFactoryBean. update数据库架构(LocalSessionFactoryBean. java: 935)在org. springframework. orm. hibernate3。LocalSessionFactoryBean. postSessionFactoryCreation(LocalSessionFactoryBean. java: 883)在org. springframework. orm. hibernate3。AbstractSessionFactoryBean. postProperties tiesSet(AbstractSessionFactoryBean. java: 213)在org. springframework. beans. factory. support。AbstractAutowireCapableBeanFactory. invkeInit方法(AbstractAutowireCapableBeanFactory. java: 1477),网址为org. springframework. beans. factory. support。AbstractAutowireCapableBeanFactory.初始化Bean(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。AbstractBeanFactory1美元。getObject(AbstractBeanFactory. java: 291)在org. springframework. beans. factory. support。DefaultSingletonBean注册. getSingleton(DefaultSingletonBean注册. java: 222)在org. springframework. bean. factory. support。AbstractBeanFactory. doGetBean(AbstractBeanFactory. java: 288)在org. springframework. beans. factory. support。AbstractBeanFactory. getBean(AbstractBeanFactory. java: 190)在org. springframework. beans. factory. support。DefaultListableBeanFactory. preInstantiateSingletons(DefaultListableBeanFactory. java: 563),网址为org. springframework. background. support。AbstractApplication ationContext. finishBeanFactory初始化(AbstractApplication ationContext. java: 895)在org. springframework. Context. support。更新(AbstractApplication ationContext. java: 425),网址为org. springframework. Context. support。ClassPathXmlApplication上下文)ClassPathXmlApplication ationContext. java: 139)at org. springframework. Context. support.ClassPathXmlApplication上下文)java: 83)at Main. main(Main. java: 18)
有什么问题吗?
我使用mysql,我在MAMP上运行它。
MyISAM引擎存在已知问题。您可以尝试此链接将引擎更改为InnoDB:
指定的密钥太长;最大密钥长度为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
b)对Employee类中的ReferencedColumnName='department id'使用@ManyToOne和@JoinColumn。 建议采用哪种方法?还是这两种方法用于完全不同的问题?
到目前为止我得到的是: 知道我做错了什么吗?谢谢!
我正在使用Hibernate和JPA注释来映射我的类。当hibernate尝试映射这个类时,我遇到了一个问题 我的Social alStat类是: 我得到了这个错误: 我猜发生这种情况是因为我试图映射到一个基本类,但@ElementCollection注释不应该解决这个问题吗? 我的item类如下所示:
null 帮我处理一下这种情况吧。谢谢你。
本文向大家介绍JavaScript创建映射,包括了JavaScript创建映射的使用技巧和注意事项,需要的朋友参考一下 示例 映射是键到值的基本映射。映射与对象的不同之处在于,它们的键可以是任何东西(原始值和对象),而不仅仅是字符串和符号。Map上的迭代也总是按照将项目插入Map中的顺序进行,而在对象中的键上进行迭代时,顺序是不确定的。 要创建映射,请使用Map构造函数: 它具有一个可选参数,该参
问题内容: 我正在开发Web应用程序。我们在项目中将Hibernate用作ORM。实际上,我们的应用程序根据用户选择动态创建一些表。用户可以选择表名,列名,然后可以从csv文件导入数据。所以我的问题是:如何用Hibernate和Java对象映射此动态创建的表? 问题答案: 它可以动态完成,但有些混乱: 在建立SessionFactory之前,您需要动态更改Hibernate的Configurati