如何使用JPA/Hibernate注释将MySQL char(n)列映射到实例变量?
我在一个类型为char(7)的MySQL表中的“language”列上遇到了JPA/Hibernate映射问题。在我的实体中,为字段生成的代码是:如何使用JPA/Hibernate注释将MySQL char(n)列映射到实例变量?,mysql,hibernate,jpa-2.0,Mysql,Hibernate,Jpa 2.0,我在一个类型为char(7)的MySQL表中的“language”列上遇到了JPA/Hibernate映射问题。在我的实体中,为字段生成的代码是: private String language; 这会在运行时导致以下异常: ... 43 more Caused by: javax.persistence.PersistenceException: [PersistenceUnit: prosvetaPersistenceUnit] Unable to build En
private String language;
这会在运行时导致以下异常:
... 43 more
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: prosvetaPersistenceUnit] Unable to build EntityManagerFactory
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:911)
at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:74)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:225)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:308)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)
... 58 more
Caused by: org.hibernate.HibernateException: Wrong column type in joo16_dev.jos_categories for column language. Found: char, expected: varchar(255)
at org.hibernate.mapping.Table.validateColumns(Table.java:283)
at org.hibernate.cfg.Configuration.validateSchema(Configuration.java:1313)
at org.hibernate.tool.hbm2ddl.SchemaValidator.validate(SchemaValidator.java:139)
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:378)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1842)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:902)
... 63 more
。。。43多
原因:javax.persistence.PersistenceException:[PersistenceUnit:ProsvetPapersistenceUnit]无法生成EntityManagerFactory
位于org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:911)
位于org.hibernate.ejb.HibernatePersistence.createContainerEntityManager工厂(HibernatePersistence.java:74)
位于org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:225)
位于org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.AfterPropertieSet(AbstractEntityManagerFactoryBean.java:308)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)
... 58多
原因:org.hibernate.HibernateException:列语言的joo16_dev.jos_类别中的列类型错误。找到:char,应为:varchar(255)
位于org.hibernate.mapping.Table.validateColumns(Table.java:283)
位于org.hibernate.cfg.Configuration.validateSchema(Configuration.java:1313)
位于org.hibernate.tool.hbm2ddl.SchemaValidator.validate(SchemaValidator.java:139)
位于org.hibernate.impl.SessionFactoryImpl.(SessionFactoryImpl.java:378)
位于org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1842)
位于org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:902)
... 63多
提前谢谢
JP试试这个:
@Column(name="language",columnDefinition="char(7)")
看看这是否有效。对于我*Grails来说,这是有效的:sqlType:“char”关于映射谢谢,是的,这是有效的:@Column(name=“language”,columnDefinition=“char”)类似地,@Column(name=“params”,columnDefinition=“text”)用于文本类型的db列“params”,而@Column(name=“published”,columnDefinition=“tinyint”)用于db列tinyint Joomla类型的“published”!开发人员熟悉。