Chúng tôi đang phát triển một ứng dụng được kết nối với cơ sở dữ liệu kế thừa. Điều này là rất "untyped", sử dụng chuỗi cho hầu như tất cả dữ liệu. Điều tồi tệ hơn là không đồng nhất: nó sử dụng các mẫu khác nhau cho ngày hoặc thời gian ('YYDDMM', 'HHMMSS', mili giây) và boolean ('Y'/'N', 'X'/''), cho thí dụ.JPA: Các trường hợp tham số của AttributeConverter
Chúng tôi muốn sử dụng JPA (EclipseLink) và trình chuyển đổi tùy chỉnh. Vấn đề là @Convert
mong đợi một lớp thực hiện AttributeConverter
, vì vậy chúng tôi phải làm các lớp mới cho mỗi mẫu. Những gì tôi muốn là một lớp BooleanConverter, có thể được khởi tạo với các giá trị 'Y'/'N' hoặc 'X'/''.
Điều này rõ ràng nằm ngoài thông số kỹ thuật JPA, nhưng có thể có thể sử dụng chú thích/cấu hình EclipseLink. Nhìn vào chú thích @Convert của nó, trình chuyển đổi có thể được chỉ định theo tên. Điều này nghe tốt với tôi nếu tôi có thể đăng ký một ynBooleanConverter
và xSpaceBooleanConverter
:
// Unfortunately, this method does not exist :(
Session.addConverter('ynBooleanConverter', new BooleanConverter("Y", "N"));
@Entity
public class MyEntity {
@Convert("ynBooleanConverter")
private Boolean myBoolean;
...
}
Có thể? Chúng ta có những lựa chọn nào khác?
có phù hợp để bạn sử dụng trình chuyển đổi JPA 2.1 không? có sẵn từ eclipselink phiên bản 2.5 không? –
Tôi có thể sử dụng phiên bản EclipseLink cuối cùng, nhưng tôi không thể xem cách giải quyết nó. – sinuhepop