我希望看看是否有人找到或实施了James Ward的S3Blob.java类(https://github.com/jamesward/S3-Blobs-module-for-Play)的Play 2版本。
记录
我们在Play 1.2应用程序中使用James Wards S3Blob.java课程已经很多年了,但我们最近决定升级到Play 2(准确地说是2.4.3)。 S3Blob类定义了一个play.db.Model.BinaryField实现,它提供了一种将Amazon S3文件列添加到MySQL表的自包含方法。
昨天我花了很多时间尝试将S3Blob.java升级到Play 2,但收效甚微。我想知道是否有人已经完成了这项工作。我遇到的主要问题是Play 2不再提供Model接口(因此没有Model.BinaryField)。推荐的替换Model接口(com.avaje.ebean.Model)不包含BinaryField接口或类似的东西。
我花了很多时间来构建ebean.config.ScalarTypeConverter接口的S3BlobScalarTypeConverter实现,看起来它可能是这样做的方式,但是我从来没有让它工作,并且该接口的文档是可悲的是,没有一个完整的例子可以找到。我的S3BlobScalarTypeConverter类实际上是在启动期间通过ebean initialiseScalarConverters()方法调用的,这当然看起来很有希望,但是类中的wrapValue()和unwrapValue()例程从未被调用过,我的应用程序继续将空值保存到S3Blob db field。
我最后通过在S3Blob持久化和读取例程中调用wrapValue()和unwrapValue()方法来解决这个问题。这似乎暂时正常工作,但我最感兴趣的是看是否有人使用支持的播放或ebean接口解决了这个问题。