2010-08-20 31 views
12

Tôi có một bảng oracle chứa char (n) loại cho một số cột. Tôi sử dụng các công cụ ngủ đông để tạo các thực thể objets và công cụ này ánh xạ loại char trong String.Loại Oracle Char và Hibernate

Nhưng khi tôi triển khai ứng dụng của tôi, tôi nhận được một lỗi vì Hibernate chờ đợi một loại varchar2 và không phải là một kiểu char:

Wrong column type in ARBOR.CMF for column CHG_WHO. Found: char, expected: varchar2(30 char) 

Những loại loại java Tôi phải sử dụng để lập bản đồ char (n) gõ vào một thực thể ?

Cảm ơn.

Trả lời

18

Có một số thông tin hữu ích ở đây on this blog entry.

Về cơ bản bạn cần phải thực hiện cấu hình hibernate bạn cụ thể hơn, vì nó là giả định một ánh xạ Chuỗi mặc định để varchar2 (30).

Bạn có thể thử sử dụng chú thích không phụ thuộc vào cơ sở dữ liệu của @Column (length = N) (trong đó N là độ dài thực tế của cột trong cơ sở dữ liệu). Nếu điều đó không hiệu quả, hãy thử sử dụng phương thức @Column (columnDefinition = "char").

+0

Cảm ơn rất nhiều, tôi đã không nhìn thấy tài sản này :) – Kiva

+1

Tôi không muốn làm điều này cho mỗi cột. Có cách nào mà tôi có thể thiết lập một số bản đồ cho ngủ đông. – yousafsajjad

+0

@stark Nó không giải quyết được sự cố –

2

Không làm việc - không Hibernate xác nhận schema:

@Column(name="ENABLED_FLAG", length=1) 
private String enabledFlag; 

Liệu làm việc, kể từ khi thuộc tính columnDefinition nói với Hibernate không để mặc định VARCHAR2 như các loại cột, và sử dụng CHAR thay vì:

@Column(name="ENABLED_FLAG", length=1, columnDefinition="CHAR") 
private String enabledFlag; 

Cột trong cơ sở dữ liệu được định nghĩa là:

ENABLED_FLAG CHAR(1 BYTE) 
Các vấn đề liên quan