您好,我正在嘗試使用 Hibernate 學習 Quarkus,但我遇到了架構驗證問題。
錯誤:
2021-12-29 16:05:14,915 錯誤 [io.qua.hib.orm.run.sch.SchemaManagementIntegrator](休眠后啟動驗證執行緒)無法驗證架構:架構驗證:遇到錯誤的列型別表 [ROOM] 中的 [BED_INFO] 列;找到 [bpchar (Types#CHAR)],但期待 [char (Types#VARCHAR)] 2021-12-29 16:05:14,921 錯誤 [io.qua.hib.orm.run.sch.SchemaManagementIntegrator](Hibernate post- ) 的啟動驗證執行緒 以下 SQL 可能會解決由 Hibernate 架構遷移工具生成的資料庫問題。警告:您必須手動驗證此 SQL 是否正確,這是盡最大努力的猜測,請不要在未驗證它是否符合您期望的情況下復制/粘貼它。
教室是這樣的
@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;
}
}
和像這樣的 mysql 模式
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
);
根據他們的檔案,這“應該”起作用,但我可能在這里遺漏了一些東西。
uj5u.com熱心網友回復:
[BED_INFO] in table [ROOM]; found [bpchar (Types#CHAR)], but expecting [char (Types#VARCHAR)]
意味著 Hibernate 已經找到了一個 bpchar(char),它期望一個 varchar。好像columnDefinition不處理char。如果您真的希望它成為char,請嘗試bpchar。
如果它不起作用,請嘗試使用 application.properties 檔案中的此選項在開發模式下運行您的 quarkus 應用程式。
quarkus.hibernate-orm.database.generation=create
這將為您的資料庫生成 Hibernate 期望的實際 DDL。
我個人會避免使用columnDefinition,而是使用length和nullable。除非您在現有應用程式上構建應用程式,否則我也會洗掉name和@Table。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/402910.html
標籤:
