[英]Hibernate query inner join on unmapped table (unidirectional)
我的Spring和Hibernate確實有問題查詢問題。
我有一個名為Car的課程,該課程將ManyToMany映射到我的課程清單。 庫存清單不包含對Car類的引用。 這將導致spring和hibernate創建映射表car_loading,其中fk指向汽車,fk指向庫存表。
我現在要查詢特殊汽車的庫存:
String squery = "SELECT i from Inventory i, car_loading loads WHERE i.id = loads.loading AND car = ?";
但我得到了例外
org.hibernate.hql.ast.QuerySyntaxException: car_loading is not mapped
僅供參考:Hibernate不支持xa = yb的JOIN ON導致我這樣做…
感謝客棧提前的任何幫助!
public class Car {
@OneToOne
private Driver driver;
@ManyToMany(cascade=CascadeType.ALL)
private List<Inventory> loading = new ArrayList<Inventory>();
@Temporal(TemporalType.TIMESTAMP)
@DateTimeFormat(pattern="dd:MM:yyy HH:mm")
private Date lastModified;
//...
}
public class Inventory {
private Integer shouldAmount;
private Integer minAmount;
private Integer isAmount;
@Temporal(TemporalType.TIMESTAMP)
@DateTimeFormat(pattern="dd:MM:yyy HH:mm")
private Date lastModified;
//..
}
我看到了這個問題,並想對其進行更新。 我做錯了。 我可以簡單地查詢汽車並返回該汽車內的所有庫存。 因為從汽車到庫存都有關系,但並非相反。 因此,查詢特定的汽車,然后簡單地返回庫存清單屬性對我有用...
您永遠不應顯式使用映射表,當您使用實體的屬性時,hibernate會自動將其添加。 對於您的情況,查詢應類似於:
"select c.loading from Car c where c = ?"
或僅獲取一個汽車對象Car car = session.get(Car.class, id)
,然后將getter用作常用Collection<Inventory> loading = car.getLoading();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.