Hi Everyone,
I want to create J2EE application using Weblogic 11g and Mongod, but i do not know What is the compatible versions of eclipselink and mongodb, Any help is appreciated.
I used weblogic 12c which contains eclipselink 2.6.1 with mongo-java-driver-2.14.1.jar, Thanks to this Topic and it works fine with jpql query but throws the below exception when using native query.
package core.entity;
import javax.persistence.Basic;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Version;
import org.eclipse.persistence.nosql.annotations.DataFormatType;
import org.eclipse.persistence.nosql.annotations.Field;
import org.eclipse.persistence.nosql.annotations.NoSql;
@Entity
@NoSql(dataType = "Logs", dataFormat = DataFormatType.MAPPED)
public class Log {
@Id
@GeneratedValue
@Field(name = "_id")
private String id;
@Version
private long version;
@Basic
@Field(name = "EnglishName")
private String englishName;
public void setId(String id) {
this.id = id;
}
public String getId() {
return id;
}
public void setVersion(long version) {
this.version = version;
}
public long getVersion() {
return version;
}
public void setEnglishName(String englishName) {
this.englishName = englishName;
}
public String getEnglishName() {
return englishName;
}
}
package core.business;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
public class Test {
EntityManagerFactory factory;
static String oid;
public static void main(String[] args) throws Exception {
Test test = new Test();
test.factory = Persistence.createEntityManagerFactory("logging");
test.testFind();
test.factory.close();
}
public void testFind() {
EntityManager em = factory.createEntityManager();
Query query = em.createNativeQuery("db.Logs.count()");
query.getSingleResult();
em.close();
}
}
<persistence-unit name="logging" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>core.entity.Log</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="eclipselink.target-database"
value="org.eclipse.persistence.nosql.adapters.mongo.MongoPlatform"/>
<property name="eclipselink.nosql.connection-spec"
value="org.eclipse.persistence.nosql.adapters.mongo.MongoConnectionSpec"/>
<property name="eclipselink.nosql.property.mongo.port" value="27017"/>
<property name="eclipselink.nosql.property.mongo.host" value="localhost"/>
<property name="eclipselink.nosql.property.mongo.db" value="logging"/>
</properties>
</persistence-unit>
Caused by: java.lang.ClassCastException: org.eclipse.persistence.nosql.adapters.mongo.MongoPlatform cannot be cast to org.eclipse.persistence.platform.database.DatabasePlatform
at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.getPlatform(DatabaseSessionImpl.java:505)
at org.eclipse.persistence.internal.databaseaccess.DatabaseCall.usesBinding(DatabaseCall.java:1233)
at org.eclipse.persistence.internal.databaseaccess.DatabaseCall.translate(DatabaseCall.java:1056)
at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:241)
at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:228)
at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeSelectCall(DatasourceCallQueryMechanism.java:299)
at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeSelect(DatasourceCallQueryMechanism.java:281)
at org.eclipse.persistence.queries.DataReadQuery.executeNonCursor(DataReadQuery.java:197)
at org.eclipse.persistence.queries.DataReadQuery.executeDatabaseQuery(DataReadQuery.java:152)
at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:904)
at org.eclipse.persistence.queries.DataReadQuery.execute(DataReadQuery.java:137)
at org.eclipse.persistence.queries.DatabaseQuery.executeInUnitOfWork(DatabaseQuery.java:803)
at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2896)
at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1857)
at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1839)
at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1804)
at org.eclipse.persistence.internal.jpa.QueryImpl.executeReadQuery(QueryImpl.java:258)
at org.eclipse.persistence.internal.jpa.QueryImpl.getSingleResult(QueryImpl.java:521)
Thanks
[Updated on: Tue, 01 March 2016 12:59]
Report message to a moderator