Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Hibernate 5:- org.hibernate.MappingException:Thực thể không xác định

Tôi đã khắc phục sự cố tương tự với Hibernate 5. Có sự cố trong mã này

Configuration configuration = new Configuration();
configuration.configure();

ServiceRegistry sr = new StandardServiceRegistryBuilder().applySettings(
    configuration.getProperties()).build();

SessionFactory sf = configuration.buildSessionFactory(sr);

Mã này hoạt động tốt cho Hibernate 4.3.5, nhưng cùng một mã có cùng một vấn đề đối với Hibernate 5.

Khi bạn thực hiện configuration.buildSessionFactory(sr) , sử dụng Hibernate 5, Configuration lưu trữ tất cả thông tin về ánh xạ nhận được bằng lệnh gọi configuration.configure() .

Giải pháp

Để khắc phục sự cố, nếu bạn sử dụng tệp cấu hình chuẩn hibernate.cfg.xmlhibernate.properties , bạn có thể tạo nhà máy phiên bằng cách này (không có ServiceRegistry )

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();

Đang tải thuộc tính

Nếu bạn có thuộc tính trong một tệp khác thì hibernate.properties , bạn có thể xây dựng nhà máy phiên bằng cách sử dụng StandardServiceRegistryBuilder (dù sao, nếu bạn có hibernate.properties và tệp khác, nó sẽ được tải cả hai)

Để tải các thuộc tính dưới dạng tài nguyên

ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().
    configure().loadProperties("hibernate-h2.properties").build();
SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);  

Bạn cần có hibernate-h2.properties trong đường dẫn lớp (thư mục gốc của thư mục nguồn, thư mục tài nguyên). Bạn cũng có thể chỉ định một đường dẫn từ thư mục nguồn gốc /com/github/xxx/model/hibernate-h2.properties .

Để tải các thuộc tính từ một đường dẫn trong hệ thống tệp

File propertiesPath = new File("some_path");
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().
    configure().loadProperties(propertiesPath).build();
SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);

Bạn có thể tìm thấy một ứng dụng bảng điều khiển mẫu bằng cách sử dụng phương pháp này tại đây thông thạo-hibernate-mysql . Nó sử dụng một lớp tiện ích để xây dựng nhà máy phiên từ thư viện thông thạo-ngủ đông .

Hướng dẫn Hibernate 5 không chính xác

Có một ví dụ không chính xác trong hướng dẫn Hibernate 5 1.1.6. Khởi động và người trợ giúp . Nó sử dụng mã này

 return new Configuration().configure().buildSessionFactory(
                new StandardServiceRegistryBuilder().build() );

Nó không có cấu hình thích hợp.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khái niệm cơ bản về khóa ngoại trong MySQL?

  2. MYSQL vào quyền truy cập outfile bị từ chối - nhưng người dùng của tôi có TẤT CẢ quyền truy cập .. và thư mục là CHMOD 777

  3. Dấu thời gian với độ chính xác mili giây:Cách lưu chúng trong MySQL

  4. Mysql_real_escape_string () có bảo vệ HOÀN TOÀN khỏi SQL injection không?

  5. PHP PDO:bộ ký tự, đặt tên?