Matt Sullivan
Matt Sullivan

Reputation: 51

Hibernate fails to map MySQL varchar(255)

How do I define this column? I have tried:

    //@Column(name="GLN_NM", nullable=false, length=255)
    //@Column(name="GLN_NM", nullable=false)
    //@Column(name="GLN_NM", nullable=false, columnDefinition="varchar(255)")
    //@Column(name="GLN_NM", nullable=false, type="text")
    //@Column(name="GLN_NM", nullable=false, columnDefinition="text")
    //@Column(name="GLN_NM", nullable=false, columnDefinition="TextType")
    @Column(name="GLN_NM", length=255)
    private String glnNm;

The issue I see is Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: wrong column type encountered in column [GPC_NM] in table [gs1_gpc]; found [text (Types#LONGVARCHAR)], but expecting [longtext (Types#CLOB)]

The software stack * MySQL 5.7.17 * mysql-connector-java-5.1.41 * sbt 0.13.15 * hibernate-core-5.2.10.Final * hibernate-jpa-2.1-api-1.0.0.Final * hibernate-entitymanager-5.2.10.Final * hibernate-validator:5.2.4.Final * hibernate-commons-annotations-5.0.1.Final.jar

I have read https://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html and several articles: 6207788, 16641758, 40884306, 28588311, 26774193, 3868096, 12398597, 8355669, 12672764, 10043556, 1262174.

Open Product Data (http://www.product-open-data.com/download/) defines the table as:

"Field"         "Type"      "Null"  "Key"   "Default"
"GCP_CD"    "varchar(13)"   "NO"    "PRI"   \N
"GLN_CD"    "varchar(13)"   "NO"    ""  \N
"GLN_NM"    "varchar(255)"  "NO"    ""  \N
"GLN_ADDR_02"   "varchar(38)"   "NO"    ""  \N
"GLN_ADDR_03"   "varchar(38)"   "NO"    ""  \N
"GLN_ADDR_04"   "varchar(38)"   "NO"    ""  \N
"GLN_ADDR_POSTALCODE" "varchar(38)" "NO" "" \N
"GLN_ADDR_CITY" "varchar(38)"   "NO"    ""  \N
"GLN_COUNTRY_ISO_CD" "varchar(38)" "NO" ""  \N
"CONTACT_NAME"  "varchar(38)"   "NO"    ""  \N
"CONTACT_TEL"   "varchar(255)"  "NO"    ""  \N
"CONTACT_HOTLINE" "varchar(255)" "YES"  ""  \N
"CONTACT_FAX"   "varchar(255)"  "NO"    ""  \N
"CONTACT_MAIL"  "varchar(255)"  "NO"    ""  \N
"CONTACT_WEB"   "varchar(255)"  "NO"    ""  \N
"GLN_LAST_CHANGE" "varchar(10)" "NO"    ""  \N
"GLN_PROVIDER"  "varchar(13)"   "NO"    ""  \N
"SEARCH_GTIN_CD" "varchar(13)"  "NO"    ""  \N
"GEPIR_GCP_CD"  "varchar(13)"   "NO"    ""  \N
"ADD_PARTY_ID"  "varchar(13)"   "NO"    ""  \N
"RETURN_CODE"   "varchar(3)"    "NO"    ""  \N
"SOURCE"    "varchar(100)"  "NO"    ""  \N
"SYNC_DT"   "date"  "YES"   ""  \N

Thanks in advance.

Upvotes: 4

Views: 2740

Answers (2)

Stefan Haberl
Stefan Haberl

Reputation: 10559

As mentioned in the comments above, the GLN_NM column is working just fine. The troublemaker is the GPC_NM column (not included in OPs original code)

Upvotes: 1

Tanmay Delhikar
Tanmay Delhikar

Reputation: 1387

It is not necessary to specify columnDefinition like columnDefinition="text" in your pojo.

Instead just put in your pojo: @Column(name="GLN_NM") private String glnNm;

In your mysql define that column as: varchar(256) or LongText or MediumText based on your requirement.

Upvotes: 2

Related Questions