簡體   English   中英

Hibernate映射查詢

[英]Hibernate mapping and query

我的 hbm.xml 的 hibernate 映射是:

<class name="UserCalendar" table="user_calendar">
    <id name="userCalendarId" column="user_calendar_id" type="long">
        <generator class="native" />
    </id>
    <property name="userId" column="user_id" type="long" not-null="true"/>
    <property name="userLoginName" column="user_login_name" type="string" not-null="true" length="32000" />
    <property name="userName" column="user_name" type="string" not-null="true" length="32000" />
    <list name="userDates" cascade="all" lazy="false">
        <key column="user_calendar_id"/>
        <index column="idx"/>
        <one-to-many class="UserDate"/>
    </list>
</class>

<class name="UserDate" table="user_date">
    <id name="userDateId" column="user_date_id" type="long">
        <generator class="native" />
    </id>
    <property name="date" column="date" type="date"/>
    <list name="userItems" cascade="all" lazy="false">
        <key column="user_date_id"/>
        <index column="idx"/>
        <one-to-many class="UserItem"/>
    </list>
</class>

<class name="UserItem" table="user_item">
    <id name="userItemId" column="user_item_id" type="long">
        <generator class="native"/>
    </id>
    <property name="spaceId" column="space_id" type="long"/>
    <property name="spaceName" column="space_name" type="string"/>
    <property name="itemRefId" column="item_ref_id" type="string"/>
    <property name="itemId" column="item_id" type="long"/>
    <property name="allocation" column="allocation" type="double"/>
    <property name="scheduledStrategy" column="scheduled_strategy" type="integer"/>
    <property name="utilization" column="utilization" type="double"/>
    <property name="deadline" column="deadline" type="date"/>
    <property name="ticketType" column="ticket_type" type="integer"/>
    <property name="isCurrentlyAssigned" column="is_currently_assigned" type="boolean"/>
</class>

UserCalendar.java:

public class UserCalendar implements Serializable {

    private static final long serialVersionUID = 10172L;

    private long userCalendarId;
    private long userId;
    private String userLoginName;
    private String userName;
    private List<UserDate> userDates;

    public UserCalendar() {

    }

    public long getUserCalendarId() {
        return userCalendarId;
    }

    public void setUserCalendarId(long userCalendarId) {
        this.userCalendarId = userCalendarId;
    }

    public long getUserId() {
        return userId;
    }

    public void setUserId(long userId) {
        this.userId = userId;
    }

    public String getUserLoginName() {
        return userLoginName;
    }

    public void setUserLoginName(String userLoginName) {
        this.userLoginName = userLoginName;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public List<UserDate> getUserDates() {
        return userDates;
    }

    public void setUserDates(List<UserDate> userDates) {
        this.userDates = userDates;
    }

}

UserDate.java:

public class UserDate implements Serializable {

    private static final long serialVersionUID = 10173L;

    private long userDateId;
    private Date date;
    private List<UserItem> userItems;

    public UserDate() {

    }

    public long getUserDateId() {
        return userDateId;
    }

    public void setUserDateId(long userDateId) {
        this.userDateId = userDateId;
    }

    public void setDate(Date date) {
        this.date = date;
    }

    public Date getDate() {
        return date;
    }

    public List<UserItem> getUserItems() {
        return userItems;
    }

    public void setUserItems(List<UserItem> userItems) {
        this.userItems = userItems;
    }
}

和 UserItem.java:

public class UserItem implements Serializable {

    private static final long serialVersionUID = 10174L;

    public static final int AUTO = 1;
    public static final int EQUAL = 2;
    public static final int CUSTOM = 3;
    public static final int CUSTOM_EQUAL = 4;

    public static final int GENERAL_TICKET = 5;
    public static final int SPECIAL_TICKET_HALF = 6;
    public static final int SPECIAL_TICKET_FULL = 7;

    private long userItemId;
    private long spaceId;
    private String spaceName;
    private long itemId;
    private String itemRefId;
    private double allocation;
    private int scheduledStrategy;
    private double utilization;
    private Date deadline;
    private int ticketType;
    private boolean isCurrentlyAssigned;

    public UserItem() {

    }

    public long getUserItemId() {
        return userItemId;
    }

    public void setUserItemId(long userItemId) {
        this.userItemId = userItemId;
    }

    public long getSpaceId() {
        return spaceId;
    }

    public void setSpaceId(long spaceId) {
        this.spaceId = spaceId;
    }

    public long getItemId() {
        return itemId;
    }

    public void setItemId(long itemId) {
        this.itemId = itemId;
    }

    public double getAllocation() {
        return allocation;
    }

    public void setAllocation(double allocation) {
        this.allocation = allocation;
    }

    public int getScheduledStrategy() {
        return scheduledStrategy;
    }

    public void setScheduledStrategy(int scheduledStrategy) {
        this.scheduledStrategy = scheduledStrategy;
    }

    public double getUtilization() {
        return utilization;
    }

    public void setUtilization(double utilization) {
        this.utilization = utilization;
    }

    public Date getDeadline() {
        return deadline;
    }

    public void setDeadline(Date deadline) {
        this.deadline = deadline;
    }

    public int getTicketType() {
        return ticketType;
    }

    public void setTicketType(int ticketType) {
        this.ticketType = ticketType;
    }

    public String getSpaceName() {
        return spaceName;
    }

    public void setSpaceName(String spaceName) {
        this.spaceName = spaceName;
    }

    public String getItemRefId() {
        return itemRefId;
    }

    public void setItemRefId(String itemRefId) {
        this.itemRefId = itemRefId;
    }

    public boolean isCurrentlyAssigned() {
        return isCurrentlyAssigned;
    }

    public void setCurrentlyAssigned(boolean isCurrentlyAssigned) {
        this.isCurrentlyAssigned = isCurrentlyAssigned;
    }   
}

現在我想 select 那些具有特定itemIdUserCalendar object 。 在我看來,如果我在UserItem userCalendarId執行

SELECT USERCALENDAR 
FROM USER_CALENDAR 
WHERE USERCALENDAR.USERCALENDARID IN 
    (SELECT USERCALENDARID 
     FROM USERITEM
     WHERE USERITEM.ITEMID=ID)

那么它可能是可能的。

我對嗎?

如何在UserItem userCalendarId 這需要什么映射?

謝謝並恭祝安康。

one-to-many ,您將需要UserDate中的列引用UserCalendar.userCalendarIdUserItem中的列引用UserDate.userDateId 您將需要在這些類中通過many-to-one指定這些列。

然后你可以使用加入

SELECT * FROM user_calendar uc 
         JOIN user_date ud ON ud.user_calendar_id=uc.user_calendar_id
         JOIN user_item ui ON ui.user_date_id=ud.user_date_id
         WHERE ui.user_item_id=<your value>

假設您在user_dateuser_item中有這些新列user_calendar_iduser_date_id

在 HQL 中它會更簡單,但我不記得了。 檢查文檔。 可能是這樣的

select ui.userDate.userCaledar from UserItem ui where ui.userItemId=:id

前提是您通過many-to-one添加了屬性userDateuserCalendar

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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