Khi nghiên cứu cách triển khai chiến lược đặt tên tùy chỉnh (chỉ dành cho tên bảng), tôi tình cờ gặp một sự không nhất quán mà tôi không thể giải quyết. (Tôi đang sử dụng chế độ ngủ đông-core 3.6.6.Final trên JBoss 6.1.0.Final với PostgreSQL 9.1.9)hibernate mà đặt tên chiến lược là mặc định
Dường như có ba triển khai xây dựng trong cho NamingStrategy
:
DefaultNamingStrategy
EJB3NamingStrategy
ImprovedNamingStrategy
Giá trị mặc định dường như được thiết lập để EJB3NamingStrategy
trong org.hibernate.cfg.Configuration
.
Tuy nhiên, tên bảng dường như được đặt theo chiến lược, không khớp với bất kỳ điều nào ở trên.
Ví dụ:
tên Class: package.ClassName
tên bảng Kết quả: classname
Chiến lược 1 và 2 chỉ cần gọi StringHelper.unqualify(className)
mà chỉ đơn giản loại bỏ tất cả các tên gói và dấu chấm, vì vậy kết quả nên ClassName
.
Chiến lược 3 loại bỏ tất cả tên gói và dấu chấm, sau đó đặt dấu gạch dưới trước mỗi chữ cái được camelcased và cuối cùng chuyển thành chữ thường, sẽ mang lại class_name
.
(Mã nguồn của chế độ ngủ đông 4.1.0.Có vẻ như không thay đổi trong các lớp này.)
Có thể giúp tôi làm rõ điều này không?