Tôi nhận được ngoại lệ Hibernate sau:org.hibernate.AnnotationException: @OneToOne hoặc @ManyToOne trên tài liệu tham khảo <entity> một thực thể chưa biết
org.hibernate.AnnotationException: @OneToOne or @ManyToOne on cz.rohan.dusps.model.Switchport.konfiguracniTemplateAccess references an unknown entity: cz.rohan.dusps.model.KonfiguracniTemplate
org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:103)
org.hibernate.cfg.AnnotationConfiguration.processEndOfQueue(AnnotationConfiguration.java:541)
org.hibernate.cfg.AnnotationConfiguration.processFkSecondPassInOrder(AnnotationConfiguration.java:523)
org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:380)
org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1377)
org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954)
cz.rohan.dusps.helper.SessionFactoryHelper.initFactory(SessionFactoryHelper.java:122)
cz.rohan.dusps.helper.SessionFactoryHelper.getSessionFactory(SessionFactoryHelper.java:134)
cz.rohan.dusps.filter.HistorieZmenFilter.doFilter(HistorieZmenFilter.java:102)
cz.rohan.dusps.filter.CharsetFilter.doFilter(CharsetFilter.java:41)
sau ~ 20 giờ chi cho các vấn đề với những người khác nhau, sau khi đọc từng blog hoặc diễn đàn có thể, tôi thực sự đang tuyệt vọng ở đây.
Đây là dự án cỡ trung bình. Tôi nên đề cập đến cơ sở dữ liệu là Postgres 9.1 và chúng tôi tạo ra DB bằng cách sử dụng một công cụ mô hình hóa. Hibernate kết nối với cơ sở dữ liệu nhưng không tạo ra nó.
Tôi đã tạo một thực thể mới trong cơ sở dữ liệu, nó được gọi là "KonfiguracniTemplate" (mẫu cấu hình). Tôi đã tạo ra mô hình, bộ điều khiển, biểu mẫu, trình duyệt tính hợp lệ, .jsp's, tất cả về cơ bản được sao chép 1: 1 từ một thực thể hiện có có tính chất tương tự. Bây giờ tôi có thể làm việc với KonfiguracniTemplate, CRUD hoàn toàn hoạt động.
Sự cố xảy ra khi tôi tham khảo KonfiguracniTemplate này từ thực thể được gọi là Switchport. Trong DB có một mối quan hệ giữa hai:
- switchport 1: 1 ... 0: N KonfiguracniTemplate (switchport luôn tham khảo một KonfiguracniTemplate; một KonfiguracniTemplate CÓ THỂ tham chiếu zero hoặc nhiều lần)
- switchport có FK konfiguracniTemplateAccess_id cho mối quan hệ này.
Trong .../mô hình/Switchport.java mối quan hệ được ánh xạ giống như tất cả các mối quan hệ khác mà đang làm việc:
@ManyToOne
@JoinColumn(nullable = false)
private KonfiguracniTemplate konfiguracniTemplateAccess;
Tôi đã thử nhiều hình thức:
@ManyToOne
@JoinColumn(name="konfiguracnitemplateaccess_id", nullable = false)
private KonfiguracniTemplate konfiguracniTemplateAccess;
hoặc
@ManyToOne(targetEntity=KonfiguracniTemplate.class)
@JoinColumn(name="konfiguracnitemplateaccess_id", nullable = false)
private KonfiguracniTemplate konfiguracniTemplateAccess;
Tôi cũng đã kiểm tra:
- cả các đơn vị trong cùng một gói
- họ đều chú thích "@Entity" sử dụng "javax.persistence.Entity nhập khẩu;"
- xây dựng sản xuất không có thông báo lỗi/cảnh báo
- miễn là tài liệu tham khảo trong switchport là nhận xét ra, mọi thứ đều tốt
Không có vấn đề gì tôi cố gắng tôi không thể thoát khỏi những "tài liệu tham khảo một thực thể chưa biết " ngoại lệ. Ai đó có thể xin vui lòng chia sẻ một ý tưởng những gì đang xảy ra hoặc có thể làm thế nào để gỡ lỗi vấn đề? Stacktrace ở đầu bài viết là tất cả những gì tôi nhận được trong nhật ký.
Tất cả đầu vào đều được đánh giá cao!
điều này có xảy ra sau khi xây dựng hoặc đang phát triển không? Thử nghiệm đơn vị của bạn có chạy không? – hvgotcodes
Đây là ngoại lệ thời gian chạy. Việc xây dựng thành công, sau đó tôi có thể truy cập biểu mẫu đăng nhập, gửi và tôi nhận được ngoại lệ. Chúng tôi không làm bài kiểm tra đơn vị. – Martin
bạn đã kiểm tra bình và chắc chắn rằng tệp lớp cho lớp bị thiếu có trong jar sau khi xây dựng không? – hvgotcodes