0

我已经完成了这个示例代码 ,并尝试只使用简单的 JPA 来实现它。但是,当我尝试使用 Google 帐户注册或使用现有用户帐户登录时,它给了我这个错误。

[RuntimeException:没有 EntityManager 绑定到此线程。尝试使用 @play.db.jpa.Transactional 注释您的操作方法]

private static List<User> getAuthUserFind(final AuthUserIdentity identity) 
{
  -> List<User> query = JPA.em().createQuery(

谷歌搜索了一段时间后,许多解决方案建议将@Transactional注释添加到调用播放操作,但该操作在播放验证代码中。

这个问题有解决方案吗,还是我必须将它与 Ebeans 一起使用?

我正在使用 Play Framework 2.2.1 并用 Java 实现我的程序。

4

2 回答 2

0

没必要用Ebean,我用mybatis作为持久化提供者,但是为了保存用户和登录没有问题,你应该使用相同的哈希算法。

散列算法用于存储密码。

要使用 JPA 之类的自定义持久性提供程序或任何您想要的,您应该实现身份验证提供程序接口,有关更多详细信息,请参阅示例项目中的 UsernamePasswordAuthProvider。

尤其关注“signupUser”和“loginUser”方法。

我已修改 play-authenticate 以支持登录名/密码而不是电子邮件/密码身份 ID。

请参阅Play-Authenticate 的修改版本

干杯。

于 2013-12-26T16:06:59.637 回答
0

您可以使用 JPA.withTransaction(callback)。当您不能将 @Transactional 放入方法中或您不想这样做时,这是更好的方法。

干杯,

阿尔贝托

于 2014-02-23T21:55:38.400 回答