hibernate getCurrentSession()。save()不保存到数据库?

时间:2015-04-08 02:05:25

标签: hibernate

我使用getCurrentSession()。save(item)将项目保存到数据库,但是失败了,我该如何解决这个问题? 我的代码如下: BaseDaoImpl.java:

public class BaseDaoImpl implements BaseDao {
@Autowired
protected SessionFactory sessionFactory;

@Override
public Session getCurrentSession() {
    return sessionFactory.getCurrentSession();
}

ItemDAOImpl.java:

public class ItemDAOImpl extends BaseDaoImpl implements ItemDAO {
@Override
@Transactional
public void addItem(Item item) throws DuplicateItemException {
    logger.debug("ItemDAOImpl.addItem() - [" + item.getItemNumber() + "]");

    try {
        Item itemCheck = getItem(item.getItemNumber());
        String message = "The item [" + itemCheck.getItemNumber() + "] already exists";
        throw new DuplicateItemException(message);
    } catch (ItemNotFoundException e) {
        getCurrentSession().save(item);
    }
}

data.xml:

    <bean id="sessionFactory"
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="packagesToScan">
        <list>
            <value>com.te.dc.*.domain</value>
        </list>
    </property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
            <prop key="hibernate.dialect">${hibernate.dialect}</prop>
            <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
            <!-- <prop key="hibernate.current_session_context_class">thread</prop> -->
        </props>
    </property>
</bean>

data.xml中

<bean id="transactionManager"
    class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

data.xml中

<tx:annotation-driven transaction-manager="transactionManager"/>

1 个答案:

答案 0 :(得分:0)

ItemDAOImpl.java:
    @SuppressWarnings("unchecked")
@Override
public Item getItem(String itemNumber) throws ItemNotFoundException {
    logger.debug("ItemDAOImpl.getItem() - [" + itemNumber + "]");

    Query query = getCurrentSession().createQuery("from Item where ItemNumber = :itemNumber ");
    query.setString("itemNumber", itemNumber);
    logger.debug("query string - [" + query.toString() + "]");

    if (query.list().size() == 0 ) {
        throw new ItemNotFoundException("Item [" + itemNumber + "] not found");
    } else {
        logger.debug("Item List Size: " + query.list().size());
        List<Item> list = (List<Item>)query.list();
        Item item = (Item) list.get(0);

        return item;
    }
}