一个Group中有多个User,这种情况下 Group是一方,User是多方。你的描述错了吧?
要一方主控的话,可以在一方设置 inverse="false",在多方设置 inverse="true"你的配置文件也不对。你到底是Group里面存放的是User对象还是String的name字段啊?如果存放的是String的name字段,那么就不是什么一对多。兄台,你好像没有搞清楚什么是一对多吧?给个简单例子,Group里面有多个User,这里是Group和User对应的java代码:public class User implements Serializable { private static final long serialVersionUID = 7641099162123257707L;
private Long id;
private String name; public Long getId() {
return this.id;
} public void setId(Long id) {
this.id = id;
} public String getName() {
return this.name;
} public void setName(String name) {
this.name = name;
}
}public class Group implements Serializable { private static final long serialVersionUID = 4633572225081179468L; private Long id;
private Set<User> users; public Long getId() {
return this.id;
} public void setId(Long id) {
this.id = id;
} public Set<User> getUsers() {
return this.users;
} public void setUsers(Set<User> users) {
this.users = users;
}
}那么,他们对应的hibermate配置文件相关部分应该是:
<hibernate-mapping package="fred.test">
<class name="Group" table="TGroup" lazy="true">
<id name="id" type="long" column="ID">
<generator class="native">
<param name="sequence">S_FSWorkOrder</param>
</generator>
</id>
<set name="users" table="TGroup_User" inverse="false">
<key column="groupId"/>
<many-to-many column="userId" unique="true" class="User"/>
</set>
</class>
</hibernate-mapping><hibernate-mapping package="fred.test">
<class name="User" table="TUser">
<id name="id" type="long" column="id">
<generator class="native">
<param name="sequence">S_User</param>
</generator>
</id>
<join table="TGroup_User" inverse="true">
<key column="userId"/>
<many-to-one name="group" column="groupId" not-null="true" />
</join>
</class>
</hibernate-mapping>
要一方主控的话,可以在一方设置 inverse="false",在多方设置 inverse="true"你的配置文件也不对。你到底是Group里面存放的是User对象还是String的name字段啊?如果存放的是String的name字段,那么就不是什么一对多。兄台,你好像没有搞清楚什么是一对多吧?给个简单例子,Group里面有多个User,这里是Group和User对应的java代码:public class User implements Serializable { private static final long serialVersionUID = 7641099162123257707L;
private Long id;
private String name; public Long getId() {
return this.id;
} public void setId(Long id) {
this.id = id;
} public String getName() {
return this.name;
} public void setName(String name) {
this.name = name;
}
}public class Group implements Serializable { private static final long serialVersionUID = 4633572225081179468L; private Long id;
private Set<User> users; public Long getId() {
return this.id;
} public void setId(Long id) {
this.id = id;
} public Set<User> getUsers() {
return this.users;
} public void setUsers(Set<User> users) {
this.users = users;
}
}那么,他们对应的hibermate配置文件相关部分应该是:
<hibernate-mapping package="fred.test">
<class name="Group" table="TGroup" lazy="true">
<id name="id" type="long" column="ID">
<generator class="native">
<param name="sequence">S_FSWorkOrder</param>
</generator>
</id>
<set name="users" table="TGroup_User" inverse="false">
<key column="groupId"/>
<many-to-many column="userId" unique="true" class="User"/>
</set>
</class>
</hibernate-mapping><hibernate-mapping package="fred.test">
<class name="User" table="TUser">
<id name="id" type="long" column="id">
<generator class="native">
<param name="sequence">S_User</param>
</generator>
</id>
<join table="TGroup_User" inverse="true">
<key column="userId"/>
<many-to-one name="group" column="groupId" not-null="true" />
</join>
</class>
</hibernate-mapping>
query.setFirstResult(startPos);
query.setMaxResults(amount);
List results = query.list();这个results里面就是分页后的结果集。
其中,startPos指的是你要取得的那一页的第一个纪录的序号,amount指的是这一页要取出的纪录的个数,也就是每页的大小