2013-07-28 31 views
22

Cho phép nói rằng tôi có một bảng có hai cột firstnamelastname với kiểu dữ liệu chuỗi. Thông thường tôi viết truy vấn hql của tôi nhưChúng ta có thể nối hai thuộc tính trong truy vấn Hibernate HQL?

"select firstname,lastname from contact" 

Tôi có thể viết truy vấn hql nối cả hai thuộc tính không?

Có lẽ cái gì đó như "select firstname+lastname as fullname from Contact"

Trả lời

33
select concat(c.firstname, c.lastname) as fullname from Contact c 

hoặc, nếu bạn muốn có một tách:

select concat(c.firstname, ' ', c.lastname) as fullname from Contact c 

Xem the documentation.

+0

Cảm ơn. Có thể thêm '", "' hoặc 'khoảng trống' vào giữa không? – abiieez

+2

Xem câu trả lời đã chỉnh sửa của tôi. –

3

tôi đã làm nó như vậy với HQL

public List<Contract> findContracts(String fullName) { 
    Query q = sessionFactory.getCurrentSession().createQuery("from Contract c where :fullName = concat(c.firstname, ' ', c.lastname)"); 
    q.setString("fullName", fullName); 
    return q.list();} 
15

Bạn có thể tạo ra một cột tính bằng đơn vị của bạn:

@Formula(value = " concat(first_name, ' ', last_name) ") 
private String fullName; 

Và trong HQL của bạn, bạn chỉ cần tham khảo lĩnh vực này như bạn sẽ làm gì để bất kỳ khác.

Trong trường hợp của bạn, bạn có thể làm:

"select fullName from Contact" 
2

Bạn cũng có thể sử dụng || nhà điều hành ghép nối:

"select c.firstName || ' ' || c.lastName as fullName from Contact" 

mặc dù có thể gây nhầm lẫn khi đọc.

Các vấn đề liên quan