florian576 (
https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%...
) *created* an issue
Hibernate ORM (
https://hibernate.atlassian.net/browse/HHH?atlOrigin=eyJpIjoiY2FjNGUwNDg5...
) / Bug (
https://hibernate.atlassian.net/browse/HHH-16094?atlOrigin=eyJpIjoiY2FjNG...
) HHH-16094 (
https://hibernate.atlassian.net/browse/HHH-16094?atlOrigin=eyJpIjoiY2FjNG...
) Default CLOB length in MySQL set to 255. (
https://hibernate.atlassian.net/browse/HHH-16094?atlOrigin=eyJpIjoiY2FjNG...
)
Issue Type: Bug Affects Versions: 6.1.6 Assignee: Unassigned Attachments: hibernate.zip
Components: hibernate-orm-modules Created: 25/Jan/2023 01:23 AM Priority: Major Reporter:
florian576 (
https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%...
)
After migrating from Hibernate 5.6.14 to 6.1.6, I am encountering a schema validation
error:
Exception in thread "main"
org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: wrong column
type encountered in column [name] in table [Foo]; found [longtext (Types#LONGVARCHAR)],
but expecting [tinytext (Types#CLOB)]
at
org.hibernate.tool.schema.internal.AbstractSchemaValidator.validateColumnType(AbstractSchemaValidator.java:179)
at
org.hibernate.tool.schema.internal.AbstractSchemaValidator.validateTable(AbstractSchemaValidator.java:151)
at
org.hibernate.tool.schema.internal.GroupedSchemaValidatorImpl.validateTables(GroupedSchemaValidatorImpl.java:46)
at
org.hibernate.tool.schema.internal.AbstractSchemaValidator.performValidation(AbstractSchemaValidator.java:96)
at
org.hibernate.tool.schema.internal.AbstractSchemaValidator.doValidation(AbstractSchemaValidator.java:74)
at org.hibernate.tool.hbm2ddl.SchemaValidator.validate(SchemaValidator.java:65)
at org.example.Main.validateSchema(Main.java:37)
at org.example.Main.main(Main.java:13)
I reproduced the bug with the example below (for more convenience, I also zipped and
attached the project).
It requires a table in MySQL:
CREATE TABLE foodb.Foo (id INT , name LONGTEXT );
pom.xml:
<?xml version= "1.0" encoding= "UTF-8" ?>
<project xmlns= "http://maven.apache.org/POM/4.0.0"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation= "http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd" >
<modelVersion> 4.0.0 </modelVersion>
<groupId> org.example </groupId>
<artifactId> hibernate5 </artifactId>
<version> 1.0-SNAPSHOT </version>
<dependencies>
<!--<dependency>
<groupId> org.hibernate </groupId>
<artifactId> hibernate-core </artifactId>
<version> 5.6.14.Final </version>
</dependency> -->
<dependency>
<groupId> org.hibernate.orm </groupId>
<artifactId> hibernate-core </artifactId>
<version> 6.1.6.Final </version>
</dependency>
<dependency>
<groupId> org.hibernate.orm </groupId>
<artifactId> hibernate-ant </artifactId>
<version> 6.1.6.Final </version>
</dependency>
<dependency>
<groupId> mysql </groupId>
<artifactId> mysql-connector-java </artifactId>
<version> 8.0.32 </version>
</dependency>
</dependencies>
<properties>
<maven.compiler.source> 11 </maven.compiler.source>
<maven.compiler.target> 11 </maven.compiler.target>
<project.build.sourceEncoding> UTF-8 </project.build.sourceEncoding>
</properties>
</project>
Foo.java
package org.example;
/* import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.Table;*/
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Lob;
import jakarta.persistence.Table;
@Entity
@Table(name = "Foo" )
public class Foo {
@Id
private int id;
@Lob
private String name;
public int getId() {
return id;
}
public void setId( int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName( String name) {
this.name = name;
}
}
Main.java:
package org.example;
import org.hibernate.boot.Metadata;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.tool.hbm2ddl.SchemaValidator;
import java.util.Map;
public class Main {
public static void main( String [] args) {
StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
.applySettings(
Map.of(
"hibernate.connection.driver_class" ,
"com.mysql.jdbc.Driver" ,
"hibernate.dialect" ,
"org.hibernate.dialect.MySQL8Dialect" ,
"hibernate.connection.url" , "jdbc:mysql:
//localhost/foodb" ,
"hibernate.connection.username" ,
"admin" ,
"hibernate.connection.password" ,
"admin" ,
"hibernate.default_schema" , "foodb"
)
)
.build();
Metadata metadata = new MetadataSources(serviceRegistry)
.addAnnotatedClass(Foo.class)
.buildMetadata();
new SchemaValidator().validate(metadata, serviceRegistry);
}
}
(
https://hibernate.atlassian.net/browse/HHH-16094#add-comment?atlOrigin=ey...
) Add Comment (
https://hibernate.atlassian.net/browse/HHH-16094#add-comment?atlOrigin=ey...
)
Get Jira notifications on your phone! Download the Jira Cloud app for Android (
https://play.google.com/store/apps/details?id=com.atlassian.android.jira....
) or iOS (
https://itunes.apple.com/app/apple-store/id1006972087?pt=696495&ct=Em...
) This message was sent by Atlassian Jira (v1001.0.0-SNAPSHOT#100214- sha1:3d33cb1 )