我的本意是想这句HQL语句"FROM RoleVO as a left join a.UserRoleVO as b where b.userID=?"让roleVO的roleID和userRoleVO的roleID相等的联合查询,
但是我发现程序却变成了FROM RoleVO as a left join a.UserRoleVO on RoleVO.roleID=UserRoleVO.userRoleID(UserRoleVO的主键) as b where b.userID=?"
我 想问如何配置才能让roleVO的roleID和userRoleVO的roleID相等的联合查询,我的映射关系到底是一对一还是多对一????麻烦大哥们说的详细点,谢谢了
role.hbm.xml
<hibernate-mapping>
<class name="com.shili2.vo.RoleVO" table="role" schema="dbo" catalog="shilikaifa">
<id name="roleID" type="java.lang.String">
<column name="roleID" length="50" />
<generator class="assigned" />
</id>
<property name="roleCode" type="java.lang.String">
<column name="roleCode" length="50" />
</property>
<property name="roleName" type="java.lang.String">
<column name="roleName" length="20" />
</property>
<many-to-one name="UserRoleVO" class="com.shili2.vo.UserRoleVO"
fetch="select" update="false" insert="false">
<column name="roleID" />
</many-to-one>
</class>
</hibernate-mapping>userRole.hbm.xml<hibernate-mapping>
<class name="com.shili2.vo.UserRoleVO" table="userRole" schema="dbo" catalog="shilikaifa">
<id name="userRoleID" type="java.lang.Integer">
<column name="userRoleID" />
<generator class="native"/>
</id>
<property name="userID" type="java.lang.String">
<column name="userID" length="50" />
</property>
<property name="roleID" type="java.lang.String" update="false" insert="false">
<column name="roleID" length="50" />
</property>
<property name="password" type="java.lang.String">
<column name="password" length="50" />
</property>
<set name="role" inverse="true">
<key>
<column name="roleID" />
</key>
<one-to-many class="com.shili2.vo.RoleVO" />
</set>
</class>
</hibernate-mapping>roleVO
public class RoleVO {
private String roleID;
private String roleCode;
private String roleName;
private UserRoleVO userRoleVO;
public UserRoleVO getUserRoleVO() {
return userRoleVO;
}
public void setUserRoleVO(UserRoleVO userRoleVO) {
this.userRoleVO = userRoleVO;
}
public String getRoleID() {
return roleID;
}
public void setRoleID(String roleID) {
this.roleID = roleID;
}
public String getRoleCode() {
return roleCode;
}
public void setRoleCode(String roleCode) {
this.roleCode = roleCode;
}
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
}userRoleVO
public class UserRoleVO {
private int userRoleID;
private String userID;
private String roleID;
private String password;
private Set role;
public String getRoleID() {
return roleID;
}
public void setRoleID(String roleID) {
this.roleID = roleID;
}
public int getUserRoleID() {
return userRoleID;
}
public void setUserRoleID(int userRoleID) {
this.userRoleID = userRoleID;
}
public String getUserID() {
return userID;
}
public void setUserID(String userID) {
this.userID = userID;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Set getRole() {
return role;
}
public void setRole(Set role) {
this.role = role;
}
}
但是我发现程序却变成了FROM RoleVO as a left join a.UserRoleVO on RoleVO.roleID=UserRoleVO.userRoleID(UserRoleVO的主键) as b where b.userID=?"
我 想问如何配置才能让roleVO的roleID和userRoleVO的roleID相等的联合查询,我的映射关系到底是一对一还是多对一????麻烦大哥们说的详细点,谢谢了
role.hbm.xml
<hibernate-mapping>
<class name="com.shili2.vo.RoleVO" table="role" schema="dbo" catalog="shilikaifa">
<id name="roleID" type="java.lang.String">
<column name="roleID" length="50" />
<generator class="assigned" />
</id>
<property name="roleCode" type="java.lang.String">
<column name="roleCode" length="50" />
</property>
<property name="roleName" type="java.lang.String">
<column name="roleName" length="20" />
</property>
<many-to-one name="UserRoleVO" class="com.shili2.vo.UserRoleVO"
fetch="select" update="false" insert="false">
<column name="roleID" />
</many-to-one>
</class>
</hibernate-mapping>userRole.hbm.xml<hibernate-mapping>
<class name="com.shili2.vo.UserRoleVO" table="userRole" schema="dbo" catalog="shilikaifa">
<id name="userRoleID" type="java.lang.Integer">
<column name="userRoleID" />
<generator class="native"/>
</id>
<property name="userID" type="java.lang.String">
<column name="userID" length="50" />
</property>
<property name="roleID" type="java.lang.String" update="false" insert="false">
<column name="roleID" length="50" />
</property>
<property name="password" type="java.lang.String">
<column name="password" length="50" />
</property>
<set name="role" inverse="true">
<key>
<column name="roleID" />
</key>
<one-to-many class="com.shili2.vo.RoleVO" />
</set>
</class>
</hibernate-mapping>roleVO
public class RoleVO {
private String roleID;
private String roleCode;
private String roleName;
private UserRoleVO userRoleVO;
public UserRoleVO getUserRoleVO() {
return userRoleVO;
}
public void setUserRoleVO(UserRoleVO userRoleVO) {
this.userRoleVO = userRoleVO;
}
public String getRoleID() {
return roleID;
}
public void setRoleID(String roleID) {
this.roleID = roleID;
}
public String getRoleCode() {
return roleCode;
}
public void setRoleCode(String roleCode) {
this.roleCode = roleCode;
}
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
}userRoleVO
public class UserRoleVO {
private int userRoleID;
private String userID;
private String roleID;
private String password;
private Set role;
public String getRoleID() {
return roleID;
}
public void setRoleID(String roleID) {
this.roleID = roleID;
}
public int getUserRoleID() {
return userRoleID;
}
public void setUserRoleID(int userRoleID) {
this.userRoleID = userRoleID;
}
public String getUserID() {
return userID;
}
public void setUserID(String userID) {
this.userID = userID;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Set getRole() {
return role;
}
public void setRole(Set role) {
this.role = role;
}
}
解决方案 »
- 用axis2发布webservice,生成的wsdl不能把所有的数据结构生成出来,生成的数据的type也为anyType
- SSH2项目中 如何发一条语句访问多个sql2000数据库(表结构完全相同)
- 错误机制(ErrorPage[errorCode=404, location=/jsp/errorPage.jsp] )
- 分享我下 谢谢
- 关于调用外部数据库的问题
- 高手帮忙看看 急 一直出HTTP Status 404 - Servlet action is not available 问题
- 如何将流写到html中 (急)
- hibernate 如何设置象jdbc的stement的timeout?
- 要知道JPA的好处在于可以分离于容器运行?
- 连接oracel时那个sid是什么?
- java调用使用SSL/HTTPS协议来传输的axis webservice服务能成功,但C#调用失败
- 关于ajax乱码问题?
(1)在多对一中我们要把外键加到多的一段,所以这里要做修改(用红色表示)
<many-to-one name="UserRoleVO" class="com.shili2.vo.UserRoleVO"
fetch="select" update="false" insert="false">
<column name="userRoleID" />
</many-to-one>
(2)这里set中要与上面对应:
<set name="role" inverse="true">
<key>
<column name="userRoleID" />
</key>
<one-to-many class="com.shili2.vo.RoleVO" />
</set>
你自己看看你的javabean
如何配置才能让roleVO的roleID和userRoleVO的roleID相等主要这个我不知道怎么配置
比如:在roleVO映射文件中加
<generator class="foreign">
<param name="property">userRoleVO</param>
</generator>
最后在加个约束标签
<one-to-one name="userRoleVO" constrained="true" />在userRoleVO的映射文件中只加这一句就行了
<one-to-one name="roleVO" cascade="all" /> 最后再把UserRoleVO这个类的Set属性取了,换成RoleVO roleVO;并加上set\get方法就行了
这样不就变成userRoleVO的userRoleID和roleVO的roleID对应了??我只是想让roleVO的roleID和userRoleVO的roleID相等
联合查询都是在多对多关系中出现的,同时要提供两个条件 如 roleID=? and userID=?根据楼主配置,HQL语句应该是这样的吧 "from RoleVO a where a.UserRoleVO.userID=?"
对象关系映射,还join什么呀
我只是想让roleVO的roleID和userRoleVO的roleID相等
我只是想让roleVO的roleID和userRoleVO的roleID相等
我只是想让roleVO的roleID和userRoleVO的roleID相等
我只是想让roleVO的roleID和userRoleVO的roleID相等
我只是想让roleVO的roleID和userRoleVO的roleID相等
我只是想让roleVO的roleID和userRoleVO的roleID相等
我只是想让roleVO的roleID和userRoleVO的roleID相等
我只是想让roleVO的roleID和userRoleVO的roleID相等
"from RoleVO a where a.UserRoleVO.userID=?"我试试把,看看能让roleVO的roleID和userRoleVO的roleID相等
不行,确实要联合查询才可以得到数据啊```而且我映射关系有错,帮忙看看如何配置让roleVO的roleID和userRoleVO的roleID相等把,我就问这个了
<set name="UserRoleVO">
<key column="roleID" />
<many-to-many class="UserRoleVO" column="roleID" />
</set>我最烦配置多对多的你自己看看吧,另外我从来不用join,对于fetch的配置你自己斟酌
晕``````不介意我问问你这个1应该是*把,你这菊花的意思是如果存在select * from UserRoleVO b where a.roleid = b.roleid and b.userid = ? 就查询出select * from RoleVO这个把
查询结果为RoleVO,通过子查询对其数据过滤,
b.roleid and b.userid = ? )