如何使用 JPA/Hibernate 注释将 MySQL char(n) 列映射到实例变量?
Posted
技术标签:
【中文标题】如何使用 JPA/Hibernate 注释将 MySQL char(n) 列映射到实例变量?【英文标题】:How to map a MySQL char(n) column to an instance variable using a JPA/Hibernate annotation? 【发布时间】:2011-09-06 15:48:47 【问题描述】:我在类型为 char(7) 的 mysql 表中的“语言”列上遇到 JPA/Hibernate 映射问题。在我的实体中,为该字段生成的代码是:
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
提前致谢!
日本
【问题讨论】:
【参考方案1】:试试这个:
@Column(name="language",columnDefinition="char(7)")
看看有没有用。
【讨论】:
谢谢,是的,这行得通:@Column(name="language",columnDefinition="char") 类似地,@Column(name="params",columnDefinition="text") 用于文本类型的 db 列 "params" 和 @Column(name = "published", columnDefinition = "tinyint")对于 tinyint Joomla 类型的 db 列“已发布”!开发人员熟悉。【参考方案2】:对我来说*Grails 是有效的:sqlType: "char" 在映射上
【讨论】:
以上是关于如何使用 JPA/Hibernate 注释将 MySQL char(n) 列映射到实例变量?的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot:如何从 JPA/Hibernate 注释中保持 DDD 实体的清洁?
如何使用 JPA/Hibernate 在孩子的 id 中引用父母的 id?
如何使用 JPA/hibernate EntityManager 和 EJB3.0 实现泛型?