商品订购系统时出现的问题汇总 not-null property references a null or transient value 等

最近用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> 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值