Home > OS >  Quarkus with hibernate found [bpchar (Types#CHAR)], but expecting [char (Types#VARCHAR)]
Quarkus with hibernate found [bpchar (Types#CHAR)], but expecting [char (Types#VARCHAR)]

Time:01-04

Hello i'm trying to learn Quarkus with Hibernate but i've ran into an issue the schema-validation.

The error:

2021-12-29 16:05:14,915 ERROR [io.qua.hib.orm.run.sch.SchemaManagementIntegrator] (Hibernate post-boot validation thread for ) Failed to validate Schema: Schema-validation: wrong column type encount ered in column [BED_INFO] in table [ROOM]; found [bpchar (Types#CHAR)], but expecting [char (Types#VARCHAR)] 2021-12-29 16:05:14,921 ERROR [io.qua.hib.orm.run.sch.SchemaManagementIntegrator] (Hibernate post-boot validation thread for ) The following SQL may resolve the database issues, as generated by the Hibernate schema migration tool. WARNING: You must manually verify this SQL is correct, this is a best effort guess, do not copy/paste it without verifying that it does what you expect.

the class Room looks like this

@Entity
@Table(name = "ROOM")
public class Room {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ROOM_ID")
    private long id;
    @Column(name = "NAME")
    private String name;
    @Column(name = "ROOM_NUMBER")
    private String roomNumber;
    @Column(name = "BED_INFO", columnDefinition = "char")
    private String bedInfo;

    public Room(String name, String roomNumber, String bedInfo) {
        this.name = name;
        this.roomNumber = roomNumber;
        this.bedInfo = bedInfo;
    }

}

and the mysql schema like this

CREATE TABLE ROOM(
  ROOM_ID BIGSERIAL PRIMARY KEY,
  NAME VARCHAR(16) NOT NULL,
  ROOM_NUMBER CHAR(2) NOT NULL UNIQUE,
  BED_INFO CHAR(2) NOT NULL
);

According to their documentation this "should" work but i'm perhaps missing something here.

CodePudding user response:

[BED_INFO] in table [ROOM]; found [bpchar (Types#CHAR)], but expecting [char (Types#VARCHAR)]

Means that Hibernate has found a bpchar(char) where it would expect a varchar. It seems that columnDefinition does not handle char. If you really want it to be a char, try bpchar instead.

In case it doesn't work, try running your quarkus app in dev mode with this option in the application.properties file.

quarkus.hibernate-orm.database.generation=create

This will generate the actual DDL for your database that Hibernate is expecting.

Personally I would refrain from columnDefinition, instead i would use length and nullable. Unless you are building an app on an existent, I would also remove name and @Table.

  •  Tags:  
  • Related