最近用hibernate和struts2写的一个小的项目,出现了很多问题。还算顺利。问题点回顾。
1.配置struts2,直接忘记在web.xml配置核心控制器。2.1.3之前是FiltDispatcher,之后是filter.StrutsPrepareAndExecuteFilter.忘记配了,直接不报错误。
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2.oracle的序列与mysql不一样。再说一遍吧!再次写一遍吧。对于自增长的主键列。若是注解。
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "generator")
@SequenceGenerator(name = "generator",sequenceName="SEQ_STREET")
@Column(name = "ID", unique = true, nullable = false, precision = 4, scale = 0)
若是xml文件
<id name="id" type="java.lang.Integer">
<column name="ID" />
<generator class="sequence">
<param name="sequence">SEQ_ORDER
</param>
</generator>
</id>
3.Eclipse用久了会报错
Port 8005 required by Tomcat v8.0 Server at localhost is already in use. The server may already be running in another process, or a system process may be using the port. To start this server you will need to stop the other process or change the port number(s).
这种错好解决。看英语。修改conf/server.xml 记得把所有的端口号全部换掉。
4.空处理,订单明细表Orderitem和订单表orders是多对一的关系。
not-null property references a null or transient value: entity.Orderitem.orders
报这种错,很明显,不为空的属性引用了空的属性。马上看代码,是不是先先用了orders,再去保存orders。
5.保存订单表时,顺便获取id,一行代码就好。num=transientInstance.getId();
public Integer save(Orders transientInstance) {
Transaction tx=null;
Session session=null;
int num=-1;
try{
session=HibernateSessionFactory.getSession();
tx=session.beginTransaction();
session.save(transientInstance);
tx.commit();
num=transientInstance.getId();
}catch(Exception e){
e.printStackTrace();
if (tx!=null) {
tx.rollback();
}
}finally{
session.close();
}
return num;
}
6.ognl展示数据。多写写就好。
<s:iterator value="#session.order.orderitems" var="s">
<tr>
<td> <s:property value="#s.goods.name" /> </td>
<td> <s:property value="#s.goods.price" />元 </td>
<td> <s:property value="#s.amount" /> </td>
</tr>
</s:iterator>

本文分享了使用Struts2和Hibernate开发项目时遇到的问题及解决方案,包括配置核心控制器、处理序列与自增主键、解决端口冲突、空属性引用错误及数据展示等。
146

被折叠的 条评论
为什么被折叠?



