PersenInfo : (long id,String name, String lastName,String email)
AnsMsg : (long id,PersenInfo fromPersoninfo,String theMsg)
Person : (PersonInfo personInfo, List<AnsMsg> msgs)person.hbm看起来像这样:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated May 4, 2012 2:48:41 PM by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="Entities.Person" table="PERSON">
<id name="id" type="long">
<column name="ID" />
<generator class="increment" />
</id>
<many-to-one name="personInfo" class="Entities.PersonInfo" cascade="all" not-null="false" lazy="false"/>
<property name="_pass" type="java.lang.String" access="field" lazy="false">
<column name="_PASS" />
</property>
<property name="_IsConnect" type="int" access="field" lazy="false">
<column name="_ISCONNECT" />
</property>
<property name="c2dmId" type="java.lang.String" lazy="false">
<column name="C2DMID" />
</property>
<property name="lastSeen" type="long" lazy="false">
<column name="LASTSEEN" />
</property>
<list name="msgList" inverse="false" table="ANSMSG" lazy="false" >
<key column="parent_id" />
<index column="idx" />
<one-to-many class="msg.AnsMsg" />
</list>
</class>
</hibernate-mapping>现在我尝试获取fromPerson=6的所有AnsMsg列表和parent_id=3的所有AnsMsg;
我的查询应该是什么样子的?(我的意思是这样的:
"from AnsMsg ansMsg where ansMsg.fromPerson.id='6' or ansMsg.parent_id='6'" 当然,这个查询不会起作用。)
我的数据看起来是这样的:

提前谢谢。
发布于 2012-05-19 01:14:45
试试这个:
select m.* from Person p, p.msgList m, m.fromPersonInfo f where p.id = 6 or f.id = 6m.fromPersonInfo.id退出,尽管JPA不能计算这样的表达式,因此,必须分离到m.fromPersonInfo f和f.id = 6select m.* from Person p, p.msgList m where p = :person or m.fromPersonInfo = :fromPersonInfo:如果你使用Person和PersonInfo实例作为查询的参数,你应该这样做:
https://stackoverflow.com/questions/10656478
复制相似问题