IllegalStateException:Play + SecureSocial中的重复参数类型

时间:2014-08-27 10:23:26

标签: java playframework ebean securesocial

我在最新的SNAPSHOT版本(db46f2c3db784f3596ddd407075c222952d08129)中使用Activator 1.2.3和SecureSocial。

目前我正在尝试使用Play的Ebean在关系数据库中实现用户存储。我发现this SO anwser不再适用了。因此,我正在推动自己的实施。令牌存储非常简单,但是我在存储用户配置文件时遇到了问题。

这是我的实体:

@Entity
public class DbUser extends Model {

  @EmbeddedId
  public DbUserId id;

  @ManyToOne
  public DbUser mainProfile;

  @OneToMany(mappedBy = "mainProfile")
  public Set<DbUser> profiles;

  public String firstName;
  public String lastName;
  public String fullName;
  public String email;
  public String avatarUrl;

  @Constraints.Required
  public AuthenticationMethod authMethod;

  public OAuth1Info oAuth1Info;
  public OAuth2Info oAuth2Info;

  public PasswordInfo passwordInfo;

  ...
}

这是ID实体:

@Embeddable
public class DbUserId {

  @Constraints.Required
  public String providerId;

  @Constraints.Required
  public String userId;
  ...
}

免责声明:我理解这可能不是理想的方式,在此与SecureSocial的选项领域之间进行翻译至少可以说是痛苦的。

我已经调整InMemoryUserService来处理这些实体,甚至猜测了doLink()方法应该如何工作。但是,我在运行它时遇到了问题。在应用新演变之前,我得到以下错误:

[info] play - database [default] connected at jdbc:h2:mem:play
[error] c.a.e.s.d.p.DeployCreateProperties - Error with models.DbUser field:oAuth1Info
java.lang.IllegalStateException: Duplicate parameter types in public securesocial.core.OAuth1Info(java.lang.String,java.lang.String)
    at com.avaje.ebeaninternal.server.type.reflect.ImmutableMetaFactory.scoreConstructors(ImmutableMetaFactory.java:106) ~[avaje-ebeanorm-3.3.4.jar:na]
    at com.avaje.ebeaninternal.server.type.reflect.ImmutableMetaFactory.createImmutableMeta(ImmutableMetaFactory.java:21) ~[avaje-ebeanorm-3.3.4.jar:na]
    at com.avaje.ebeaninternal.server.type.DefaultTypeManager.recursiveCreateScalarDataReader(DefaultTypeManager.java:185) ~[avaje-ebeanorm-3.3.4.jar:na]
    at com.avaje.ebeaninternal.server.deploy.parse.DeployCreateProperties.createProp(DeployCreateProperties.java:317) [avaje-ebeanorm-3.3.4.jar:na]
    at com.avaje.ebeaninternal.server.deploy.parse.DeployCreateProperties.createProp(DeployCreateProperties.java:345) [avaje-ebeanorm-3.3.4.jar:na]

我的假设是OAuthInfo和密码信息根本不是@Entities,我必须创建自己的实体并在它们之间进行映射。但是,我仍然想了解这个错误...

0 个答案:

没有答案