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

THAM GIA với conditon trong truy vấn HQL?

Tương ứng là HQL

  select header.advmagencymaster.mamaid,
         header.advmagencymaster.mamaname,header.trohiono 
         from ADVRoheader header 

Nhưng trong HQL, tốt hơn là nên truy xuất toàn bộ đối tượng để chúng ta cũng có thể sử dụng các thuộc tính khác

   from ADVRoheader header 
   inner join 
   header.advmagencymaster master

HQL không phụ thuộc vào cơ sở dữ liệu bên dưới mà sẽ giống nhau đối với tất cả các cơ sở dữ liệu (Oracle, Mysql, SQL server, v.v.). Chỉ chúng ta cần thay đổi kết nối Cơ sở dữ liệu trong tệp cấu hình chính.

Các lớp mô hình của bạn sẽ giống như thế này

class ADVMAgencyMaster{
  private String mamaid;
 private String mamaname;  //getters and setters
}

class ADVRoheader{
 private String trohiono;
 private ADVMAgencyMaster advmagencymaster;     // Reference to the ADVMAgencyMaster
 //getters and setters}

Bạn đã xác định mối quan hệ nhiều với một trong xml

 <many-to-one name="advmagencymaster" class="com.adv.hibernatebean.ADVMAgencyMaster" fetch="select"> <column name="TROHAMAID" /></many-to-one>

Vì vậy, trong khi tải đối tượng ADVRoheader ở chế độ ngủ đông cũng sẽ tải tham chiếu đối tượng bên trong "advmagencymaster".

vì điều này, bạn cần chỉ định lazy ="false" thay vì fetch ="select".

lazy ="true" - lười tải nó sẽ chỉ tải đối tượng mẹ

lazy- "false" - việc tải háo hức sẽ tải đối tượng con (bên trong) cũng với đối tượng mẹ.

thêm cả hai tệp hbm.xml vào tệp cấu hình chính (hibernate.cfg.xml) như sau

 <mapping resource="com/ADVRoheader.hbm.xml"></mapping>
 <mapping resource="com/ADVRomaster.hbm.xml"></mapping> 

ngay trước thẻ đóng của nhà máy phiên tại đây, ánh xạ đang diễn ra với Cơ sở dữ liệu.

Thông thường, đối với các phần tử của trình tạo, chúng ta cần sử dụng kiểu số nguyên và thực hiện thay đổi trong cơ sở dữ liệu.

Lọc bổ sung, chúng ta có thể thêm mệnh đề 'where' sau truy vấn chính. Ở đây chỉ yêu cầu điều kiện tham gia và nó đã được xử lý bởi hibernate.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL:nhận giá trị tối đa của một cột và các cột khác tương ứng

  2. Làm thế nào để biết một hàng sẽ đi vào phân vùng nào, với một giá trị khóa phân vùng đã biết trong Oracle?

  3. Cách giải quyết ORA-06512 tại số dòng

  4. Sự khác biệt giữa (*) và. * Trong regexp là gì?

  5. Xử lý ngoại lệ PL / SQL:không làm gì (bỏ qua ngoại lệ)