0

我有一个像这样的用户模型

@Entity
@Table(name="SHOPPER")
public class User extends GenericModel {

    @Id
    @Column(name="SHRFNBR")
    @GeneratedValue(generator="SEQ_SHP", strategy=GenerationType.SEQUENCE)
    @SequenceGenerator(name="SEQ_SHP", sequenceName="SEQ_SHP", allocationSize=1)
    public Long id;

    @Column(name="SHLOGID")
    public String email;

    @Column(name="SHLPSWD")
    public String password;


    public static User isUser(String user, String pass){
        return User.find("byEmailAndPassword", user, pass).first();
    }
}

在 DB 密码上它的 RAW 类型和在控制器上它是用 RSA 编码的。

最主要的是它没有找到任何结果,因为进入数据库的二进制文件似乎与现场的二进制文件不同。

起初我认为这可能是应用程序上的一些字符编码问题,但后来我指向同一个数据库,但在生产中并且它有效。所以我检查了开发数据库,​​发现另一个字符集而不是ISO-8859-1 (prod) 是ISO-8859-15 (devel),这似乎没什么不同。

更新开发字符集后,情况是一样的。还有其他地方的 RSA 字符串在 DB 上编码错误吗?

进度解析:

该过程是一个登录过程,用户插入电子邮件和密码,最后一个使用 RSA 编码,并将结果发送到 DB 进行比较。
DB 上的字段包含如下值:

CB4F3ECB7763C98EF67CA761700D1FB255F90E4473B1BB594B2238756307DF2D155D57A2CBA2930C‌162CB0634765D48EA111F743F6825F2457340148F680E300

更多信息:

  • 数据库甲骨文 10g
  • 播放框架 1.2.4
4

1 回答 1

0

不要将二进制数据映射到字符串,而是使用 byte[],这样您就不会遇到任何字符编码问题。

于 2013-03-09T14:48:39.030 回答