【问题标题】:How to map a MySQL char(n) column to an instance variable using a JPA/Hibernate annotation?如何使用 JPA/Hibernate 注释将 MySQL char(n) 列映射到实例变量?
【发布时间】: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

提前致谢!

日本

【问题讨论】:

    标签: mysql hibernate jpa-2.0


    【解决方案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" 在映射上

    【讨论】:

      猜你喜欢
      • 2012-04-06
      • 2010-10-22
      • 2023-03-22
      • 2017-11-02
      • 2011-03-31
      • 1970-01-01
      • 2017-06-06
      • 2014-02-21
      • 1970-01-01
      相关资源
      最近更新 更多