簡體   English   中英

未映射表上的Hibernate查詢內部聯接(單向)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM