1
我想做一個查詢購買我沒有訪問到h2數據庫模式,所以我不知道如何命名連接屬性。 我基本上想要在特定的日期間隔內查詢酒店中的可用房間。對於我需要一個這樣的查詢:Java Spring查詢
Select Room
From Room Inner Join Booking On Room.Id = Booking.RoomId Inner Join RoomType On RoomType.Id = Room.RoomTypeId
Where NOT ((Booking.beginDate >= @initDate And Booking.beginDate <= @endtDate) or (Booking.beginDate >= @initDate And Booking.endDate <= @endDate)
or (Booking.beginDate <= @initDate and Booking.endDate >= @endDate)) and Booking.Approved = 1 and RoomType.Id = @roomType)
在java中春:
@Query(........)
Iterable<Room> findAvaiableRooms(Date initDate, Date endDate, long roomType);
######## The Entities #######
@Entity
public class Booking {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private long id;
private Date beginDate;
private Date endDate;
private boolean aproved;
@ManyToOne
private Room room;
}
@Entity
public class Room {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String name;
@ManyToOne
private RoomType roomType;
@OneToMany(fetch = FetchType.LAZY, cascade=CascadeType.ALL, mappedBy="room", orphanRemoval = true)
private Collection<Booking> bookings = new ArrayList<Booking>();
}
@Entity
public class RoomType {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String type;
private int price;
private int numberOfRooms;
@OneToMany(fetch = FetchType.LAZY, cascade=CascadeType.ALL, mappedBy="roomType", orphanRemoval = true)
private Collection<Room> rooms = new ArrayList<Room>();
}
我真的不知道該如何查詢應爲與數據庫一致。
如果您無權訪問h2數據庫,您如何才能執行查詢? – Stefan
你可以執行一個正常的sql查詢「select * from
@Stefan我有權訪問數據庫,我只是不知道如何查看數據庫模式 – MMrj
回答
您可以直接在您的註解定義了聯接列的名稱:
或者你也可以嘗試JPA查詢,而不是和使用對象的關係,而不是表的
來源
2015-11-12 20:12:53 Zilvinas
事實上,你有ORM的所有這些註釋使我相信你正在使用Hibernate。
我會勸你忘掉ORM,直到你能自己感覺更舒適。
您正在依賴Hibernate爲您創建表格,而未完全理解它會給您帶來什麼。
您不知道如何編寫JOIN,因此您依賴於Hibernate爲您生成的SQL。
手動創建表格。編寫一個使用手工SQL的數據訪問類。手動將這些結果映射到您的對象中。
一旦你完成了,你會真正明白這個問題。
您將欣賞(或鄙視)Hibernate爲您提供的內容,並瞭解它如何更好地工作。
來源
2015-11-12 19:44:50 duffymo
相關問題