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

Hibernate @OneToMany ném MySQLSyntaxErrorException:Bạn có lỗi trong cú pháp SQL của mình

Bạn không thể chọn một tập hợp trong phép chiếu DTO như thế này:

SELECT new com.tim.core.dto.client.MinimalContactDTO(c.id, c.version, c.name, c.title, c.email, c.createdDate, **c.phones**)

ResultSet giống như một bảng tính, không giống như một biểu đồ của các đối tượng.

Việc bạn cần làm là thay đổi DTO của mình như sau:

public MinimalContactDTO(
    Long id, Long version, String name, String title, String email, 
    Date createdDate, ContactPhone phone) {
    ...
}

Giờ đây, bạn chỉ có thể chuyển một điện thoại tại một thời điểm:

SELECT new com.tim.core.dto.client.MinimalContactDTO(
    c.id, c.version, c.name, c.title, c.email, c.createdDate, p)
from CONTACT c 
JOIN c.phones p
where 
( 
    c.localRecordStatus IS NULL OR 
    c.localRecordStatus IN (:openStatusList) )
) 

Sau đó, bạn có thể chuyển đổi ResutSet giống bảng thành một biểu đồ bằng cách sử dụng Hibernate ResultTransformer .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hàm giờ () của Hive trả về giá trị đồng hồ 12 giờ

  2. Tự động điền trong MySQL trong Windows

  3. mysql:tìm các hàng có nhiều thẻ và cùng một id

  4. Khóa ngoại giữa các bảng MySQL InnoDB không hoạt động ... tại sao?

  5. Làm phẳng kiểu Pivot của bảng cho Datagridview