【问题标题】:Update query to change filed from one table which is depend on other更新查询以从一个依赖于另一个表的表中更改字段
【发布时间】:2018-06-30 22:05:08
【问题描述】:

我有两个表所有者和成员,在成员表中有字段 mid,所有者中的同名字段 mid 但具有空值,我想从所有者表中更新 mid 作为插入成员表中间的值,中间应该一样。使用hibernate所以我试了一下,但查询不正确。

public void updateOwnerMember(Owner owner) {
    Session session = sessionFactory.openSession();
    Transaction tx = session.beginTransaction();

    String hql="update Owner set Owner.mId = Member.mId from Member Owner inner join mId Member on Member.mId = Owner.mID where Owner.mId is null ";
    Query query=sessionFactory.openSession().createQuery(hql);
    query.setInteger(0,1);
    query.setInteger(1,2);
    query.executeUpdate();
    tx.commit();
    session.close();

}

【问题讨论】:

    标签: java mysql hibernate spring-mvc hibernate-criteria


    【解决方案1】:

    这只有在 mId 不是主键的情况下才有可能,否则你没有任何东西可以加入它们。

    示例查询(未验证):

    UPDATE Owner 
    SET Owner.mId = (SELECT Member.mId FROM Member WHERE m.id = o.id)
    

    【讨论】:

    • 如何将mId从成员表加入到所有者表?
    • Member.mId = Owner.mId,但如果它们包含空值,则不能加入。如果一个值为空,mysql 将不知道如何连接这两个项目
    猜你喜欢
    • 2014-03-06
    • 2015-04-29
    • 1970-01-01
    • 2015-10-03
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    • 2018-09-14
    相关资源
    最近更新 更多