我在这里所说的对象也就是用Criteria实现
不好意思了,被弄晕了
不好意思了,被弄晕了
解决方案 »
- JAVA实例数目
- struts1.1 struts-config配置文件里面className怎么用?
- java中的文件上传进度条原理是什么哈
- 今天开心,散分了,抢到沙发100分
- 关于javamail的问题
- JDBC访问sql server2000
- 请教:我配置的Apache+Tomcat测试开始页面成功!但运行jsp程序出错!
- 有人用过WebWork做过东西吗? 上来研究研究~
- 一个关于操作Properties 类型数据的问题,
- ResultSet set = stmt.executeQuery(SQL);执行完后,数据是取到了本机还是在数据库服务器?
- 在JAVA与.NET的边缘---java让我郁闷.
- 发现java .net 没什么好搞的!
UserBasicInfo类型的变量?
<class name="org.jbpm.identity.User"
table="T_SYSTEM_USER">
<id name="ID" column="ID"><generator class="assigned" /></id>
<property name="REGNAME" column="REGNAME"/>
<property name="PASSWORD" column="PASSWORD"/>
<set name="memberships" cascade="all">
<key column="USER_" />
<one-to-many class="org.jbpm.identity.Membership" />
</set>
<set name="permissions" cascade="all" table="ID_PERMISSIONS">
<key column="ENTITY_" foreign-key="none" />
<element type="org.jbpm.identity.hibernate.PermissionUserType">
<column name="CLASS_"/>
<column name="NAME_"/>
<column name="ACTION_"/>
</element>
</set>
</class>
</hibernate-mapping>
类似这样应该可以
设置好了后呢
怎么用Criteria实现查询
select userRegInfo.regName,userBasicInfo.nickname,userBasicInfo.realName
from userRegInfo inner join userBasicInfo
on userRegInfo.ID = userBasicInfo.ID
where userRegInfo.ID = 1按道理来说,查询出来结果集会有三个字段
可是我打印出来的时候却不行
提示说数组越界的错误
我是使用CUSTOMERS表和ORDERS表,是一对多的关系,HBM.XML是如下配置的.
Order.hbm.xml:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping >
<class name="src.mypack.Order" table="ORDERS">
<id name="id" type="long" column="ID">
<generator class="increment"/>
</id>
<property name="orderNumber" type="string" >
<column name="ORDER_NUMBER" length="15" />
</property>
<many-to-one name="customer" column="CUSTOMER_ID" class="src.mypack.Customer" outer-join="true" />
</class>
</hibernate-mapping><?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping >Customer.hbm.xml:
<class name="src.mypack.Customer" table="CUSTOMERS" >
<id name="id" type="long" column="ID">
<generator class="increment"/>
</id>
<property name="name" type="string" >
<column name="NAME" length="15" />
</property>
<set name="orders" inverse="true" lazy="true" batch-size="4">
<key column="CUSTOMER_ID" />
<one-to-many class="src.mypack.Order" />
</set>
</class>
</hibernate-mapping>
然后很简单, 一个Customer.java和一个Order.java.
然后通过DAO去取得,Order的对象, 而Order里面由于有Customer的对象,直接通过Order就可以取得CUSTOMERS表里面的值.
在贴一下,Order.java的SOURCE
package src.mypack;
import java.io.Serializable;
import org.apache.commons.lang.builder.ToStringBuilder;
/** @author Hibernate CodeGenerator */
public class Order implements Serializable { /** identifier field */
private Long id;
/** nullable persistent field */
private String orderNumber;
/** nullable persistent field */
private src.mypack.Customer customer;
/** full constructor */
public Order(String orderNumber, src.mypack.Customer customer) {
this.orderNumber = orderNumber;
this.customer = customer;
}
/** default constructor */
public Order() {
}
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
public String getOrderNumber() {
return this.orderNumber;
}
public void setOrderNumber(String orderNumber) {
this.orderNumber = orderNumber;
}
public src.mypack.Customer getCustomer() {
return this.customer;
}
public void setCustomer(src.mypack.Customer customer) {
this.customer = customer;
}
public String toString() {
return new ToStringBuilder(this)
.append("id", getId())
.toString();
}
}但是要是加上一个表ORDERDETIAL就是ORDERS表的详细内容的表, 是多对一的关系, 我试着从OrderDetail对象去取Order和Customer都是可以的,但从Order开始去取OrderDetail和Customer就不行, 就算是取到了数据变成Order和OrderDetail的一对一.有什么解决办法
贴出来, 大家指教一下Order.hbm.xml<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping > <class name="src.mypack.Order" table="ORDERS">
<id name="id" type="long" column="ID">
<generator class="increment"/>
</id>
<property name="orderNumber" type="string" >
<column name="ORDER_NUMBER" length="15" />
</property>
<many-to-one name="customer" column="CUSTOMER_ID" class="src.mypack.Customer" outer-join="true" />
<set name="orderdetails" inverse="true" lazy="true" batch-size="4">
<key column="ID" />
<one-to-many class="src.mypack.Orderdetail"/>
</set>
</class>
</hibernate-mapping>新增加的ORDERDETAIL表的HBM.XML
Orderdetail.hbm.xml<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping > <class name="src.mypack.Orderdetail" table="ORDERDETAIL" >
<id name="id" type="long" column="ID">
<generator class="increment"/>
</id>
<property name="sum" type="long" >
<column name="SUM" length="9"/>
</property>
<many-to-one name="order" column="ORDER_ID" class="src.mypack.Order" outer-join="true" />
</class>
</hibernate-mapping>
增加一个属性
/** persistent field */
private Set orderdetails;
public Set getOrderdetails() {
return this.orderdetails;
}
同时也增加对这个属性的GET和SET
public void setOrderdetails(Set orderdetails) {
this.orderdetails = orderdetails;
}然后想用Order对象去取orderdetails, 是能取到,但是每个orderdetails里面就一条数据,好象是变成了Order和OrderDetail的一对一的关系了.不知道错在哪里