2015-09-28 67 views
0

我将图像存储在文件系统中并更新数据库中的图像路径。如何使用休眠功能在数据库中交换ID

表结构

photo_id,USER_ID,photo_no,PHOTO_URL

用户可以上传最多5张照片。 photo_no是我存储订单的字段。第一张照片将永远是主要照片。但用户可以将任何照片作为主要照片,并且他们也可以安排照片。

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

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

回答

1

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

photo_id, user_id, photo_no, photo_url, is_main_photo 

并只把1为主要照片和0为其他照片。

+0

谢谢。照片订单不会保持不变,但我可以引入新的专栏并维护订单。 1,3 | 2,1 | 3,3 | 4,5 | 5,5(照片,顺序) - 第二张照片是主照片。但不知道如果更改表,如果有些更改顺序。 – user3909315

+0

如果你真的需要交换两张照片的photo_no,那么你的桌子设计就足够了。 您可以使用Hibernate以编程方式交换订单号。 我不确定你的持久层是怎么样的,但你可以这样做: 'mainPhoto.setPhotoNo(futureMainPhoto.getPhotoNo()); futureMainPhoto.setPhotoNo(1); entityManager.pesist(mainPhoto); entityManager.pesist(futureMainPhoto);' – Milan