【问题标题】:Update specific field of table regardless of other fields in hibernate更新表的特定字段,而不考虑休眠中的其他字段
【发布时间】:2012-04-18 11:01:00
【问题描述】:

我的桌子上有很多信息。从视图页面更新此表时,我没有加载所有信息。

下面是我使用 hibernate

更新表格的代码
HibernateTemplate hibernateTemplateObj = getHibernateTemplate();
        hibernateTemplateObj.update(myEntityBean);

上面是更新字段,但在我的视图页面上不可见的字段将被更新为空白。

所以,我用了下面一个……

HibernateTemplate hibernateTemplateObj = getHibernateTemplate();
        hibernateTemplateObj.update("myRequiredField", myEntityBean);

根据文档here,它说如果我使用 update("string",entity) 它将更新该字段。但它的工作方式不一样。

谁能给点建议。


我发现了一些帖子。

post1 post2

它说,我需要创建查询。但我不知道如何从中创建查询? 如果有人有任何想法..请帮忙。我认为这是这些帖子中的已知问题。

【问题讨论】:

    标签: java sql hibernate hibernate-mapping


    【解决方案1】:

    您可以像这样使用 Session 对象创建查询。

        SessionFactory factory= HibernateUtil.getSessionFactory();  
        session = factory.openSession();  
        session.beginTransaction();  
        Query query = session.createQuery("Select c.productList from Cart c Where c.cartId=:cartId"); 
        query.setParameter("cartId", cart.getCartId());
        List productList=(List) query.list();
        session.getTransaction().commit();
    

    虽然您知道查询应返回哪种对象,但您可以强制转换并使用它。 您可以编写本机查询或休眠查询,但我认为休眠查询更容易。

    【讨论】:

    • 谢谢mbaydar,我对hibernate不太熟悉。所以,我有一个问题。我们可以将 session.createQuery 用于 DML 查询以进行更新、删除查询吗?
    • 其实hibernate会为你创建很多查询,你要做的只是调用hibernates方法。例如,如果你想删除对象,你可以调用 session.delete(object) 并且休眠创建查询并从数据库中删除对象。像这样,您可以保存或更新对象。但是如果你想自己做,你可以像我的例子一样做。
    • 感谢 mbaydar。我在更新查询中使用了相同的代码并且有效。
    猜你喜欢
    • 2017-06-27
    • 1970-01-01
    • 1970-01-01
    • 2011-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    • 2017-01-14
    相关资源
    最近更新 更多