Java Hibernate映射和查询
my hbm.xml的hibernate映射为:Java Hibernate映射和查询,java,hibernate,mapping,Java,Hibernate,Mapping,my 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" colu
<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>
现在我想选择那些具有特定itemId
的UserCalendar
对象。如果我在UserItem
中插入userCalendarId
并执行
SELECT USERCALENDAR
FROM USER_CALENDAR
WHERE USERCALENDAR.USERCALENDARID IN
(SELECT USERCALENDARID
FROM USERITEM
WHERE USERITEM.ITEMID=ID)
那就有可能了
我说得对吗
如何在UserItem
中插入userCalendarId
?这需要什么映射
感谢和问候。要拥有
一对多
,您需要在UserDate
中的列引用UserCalendar.userCalendarId
和UserItem
中的列引用UserDate.userDateId
。您需要通过这些类中的多对一指定这些列
然后你可以使用join
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>
如果您通过
many-to-one
添加属性userDate
和userCalendar
,使具有一对多
,则需要userDate
中的列引用userCalendar.userCalendarId
和UserItem
中的列引用userDate.userDateId
。您需要通过这些类中的多对一指定这些列
然后你可以使用join
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>
前提是您通过多对一
添加了属性userDate
和userCalendar
SELECT USERCALENDAR
FROM USER_CALENDAR
WHERE USERCALENDAR.USERCALENDARID IN
(SELECT USERCALENDARID
FROM USERITEM
WHERE USERITEM.ITEMID=ID)
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>
select ui.userDate.userCaledar from UserItem ui where ui.userItemId=:id