リレーションがある場合、MongoDB で EclipseLink (2.4.1) が期待どおりに動作するようにしようとしています。しかし ...
私はエンティティに持っています:
@Entity
@NoSql(dataType="account", dataFormat=DataFormatType.MAPPED) // dataType -> collectionName, MAPPED -> because object are transformed into a MAP in MongoDB
@Table(uniqueConstraints = @UniqueConstraint(columnNames = "email"))
public class Account extends JPAMongoBaseEntity {
@Id
@Field(name="_id")
@GeneratedValue
private String id;
@Override
public String getId() { return id;};
public void setId(String id) { this.id = id;};
// Must be unique (id fonc)
@NotNull
@Size(min = 1, max = 256)
@Email
private String email;
...
と :
@Entity
@NoSql(dataType="invoice", dataFormat=DataFormatType.MAPPED) // dataType -> collectionName, MAPPED -> because object are transformed into a MAP in MongoDB
@Table(uniqueConstraints = @UniqueConstraint(columnNames = "label"))
public class Invoice extends JPAMongoBaseEntity {
@Id
@Field(name="_id")
@GeneratedValue
private String id;
... // Relations
@ManyToOne
private Account account;
account.id = パラメータを持つすべての請求書を取得しようとしています。私はこのリクエストを行います:
TypedQuery<Invoice> q = em.createQuery("Select i from Invoice i join i.account a where a.id=:accountId", Invoice.class);
q.setParameter("accountId", accountId);
List<Invoice> res = q.getResultList();
結果は常に同じです。
Internal Exception: java.lang.ClassCastException: org.eclipse.persistence.eis.mappings.EISOneToOneMapping cannot be cast to org.eclipse.persistence.mappings.OneToOneMapping
Query: ReadAllQuery(referenceClass=Invoice jpql="Select i from Invoice i join i.account a where a.id=:accountId")
私は多くのこと(@JoinField、@OneToOne、...)を試しましたが、常にその例外に遭遇します。
どんな助けでも大歓迎です。