【问题标题】:How to swap ids in database using hibernate如何使用休眠交换数据库中的ID
【发布时间】:2015-09-28 13:05:53
【问题描述】:

我将图像存储在文件系统中并更新数据库中的图像路径。

表结构

photo_id,user_id,photo_no,photo_url

用户最多可以上传 5 张照片。 photo_no 是我存储订单的字段。第一张照片将始终是主照片。但用户可以将任何照片作为主照片,也可以对照片进行排列。

如果用户想将第三张照片作为主照片(photo_no 1)。然后我必须将 photo_no 3 更新为某个虚拟临时编号,并将 photo_no 1 更​​新为 3 并将临时编号更新为 1。这样我可以交换照片。但我不认为这是一个好方法。任何人都可以提出一个好的方法来做到这一点。

是否可以通过良好的表格设计来处理这种情况?

【问题讨论】:

    标签: mysql image hibernate photo


    【解决方案1】:

    如果照片顺序可以保持不变,我建议您引入一个新标志(列)。所以你可以:

    photo_id, user_id, photo_no, photo_url, is_main_photo
    

    只需将 1 用于主照片,将 0 用于其他照片。

    【讨论】:

    • 谢谢。照片顺序不会保持不变,但我可以引入一个新列并保持顺序。 1,3 | 2, 1 | 3, 3 | 4, 5 | 5, 5(照片,订单) - 这里的第二张照片是主要照片。但是如果某些更改顺序,不确定如何更新表格。
    • 如果你真的需要交换两张照片的photo_no,那么你的桌子设计就足够了。您可以使用 Hibernate 以编程方式交换订单号。我不确定你的持久层是什么样子的,但你可以这样做:mainPhoto.setPhotoNo(futureMainPhoto.getPhotoNo()); futureMainPhoto.setPhotoNo(1); entityManager.pesist(mainPhoto); entityManager.pesist(futureMainPhoto);
    猜你喜欢
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-27
    • 2011-08-16
    • 1970-01-01
    相关资源
    最近更新 更多