1

我正在尝试此 JPA 查询"SELECT ml FROM MediaLibrary ml WHERE ml.media.id = :id",但收到此错误消息:"Cannot find type of (part of) ml.media.id since symbol has no type; implicit variable?"

我意识到这可能应该是某种MEMBER OF查询,但我尝试了相同的结果。我正在寻找包含 id 等于给定值的媒体的媒体库。

简化代码:

@Entity( name = "MediaLibrary" )
@Table( name = "MediaLibrary" )
public class MediaLibrary implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private String mediaLibraryKey;

    @Embedded
    private Set<Media> media;
....

@Embeddable
public class Media implements GenericDataProducer, CreationDateKnown, Serializable {
    private static final long serialVersionUID = 1L;

    @Column
    private String id;
....

我的 Mongo 数据看起来和我预期的一样:

db.MediaLibrary.find().pretty();
{
"_id" : ObjectId("51bcb440b3060638e5890581"),
    ....
"media" : [
    {
                    ....
        "id" : "f0f9b014-24b1-4408-b0aa-3c9f74c822f8",
                    ....
    }
]
}

更新:工作命令行 mongodb 查询是这样的:

db.MediaLibrary.find( { "media" : { $elemMatch : { "id" : "f0f9b014-24b1-4408-b0aa-3c9f74c822f8" } } } );

或在java中:

new BasicDBObject( "media", new BasicDBObject( "$elemMatch", new BasicDBObject("id", id) ) );

更新:另一个查询:"SELECT ml FROM MediaLibrary ml WHERE :id MEMBER OF ml.media.id"

并在 FINE 级别输出:

FINE:JPQL 单字符串,带有“SELECT ml FROM MediaLibrary ml WHERE :id MEMBER OF ml.media.id”
2013 年 6 月 16 日下午 12:47:04 org.datanucleus.store.query.AbstractJPQLQuery compileInternal
FINE:JPQL 查询:编译“SELECT ml FROM MediaLibrary ml WHERE:id MEMBER OF ml.media.id”
2013 年 6 月 16 日下午 12:47:04 com.xonami.rest.server.MyServerResource 日志
严重:com.xonami.rest.server.media.MediaStateNoIdResource 在日志中:
org.datanucleus.exceptions.NucleusUserException:找不到类型(部分)ml.media.id,因为符号没有类型;隐式变量?:找不到(部分)ml.media.id 的类型,因为符号没有类型;隐式变量?
     在 org.datanucleus.query.expression.PrimaryExpression.bind (PrimaryExpression.java: 274)
     在 org.datanucleus.query.expression.InvokeExpression.bind (InvokeExpression.java: 97)
     在 org.datanucleus.query.compiler.JavaQueryCompiler.compileFilter (JavaQueryCompiler.java: 475)
     在 org.datanucleus.query.compiler.JPQLCompiler.compile (JPQLCompiler.java: 81)
     在 org.datanucleus.store.query.AbstractJPQLQuery.compileInternal (AbstractJPQLQuery.java: 271)
     在 org.datanucleus.store.mongodb.query.JPQLQuery.compileInternal (JPQLQuery.java: 163)
     在 org.datanucleus.store.query.Query.setImplicitParameter (Query.java: 811)
     在 org.datanucleus.api.jpa.JPAQuery.setParameter (JPAQuery.java: 438)
     在 org.datanucleus.api.jpa.JPAQuery.setParameter (JPAQuery.java: 58)
     在 com.xonami.rest.cache.DataFetcher.getMediaById (DataFetcher.java: 205)

更新

查询:SELECT ml FROM MediaLibrary ml, Media m WHERE m MEMBER OF ml.media AND m.id = :id

2013 年 6 月 17 日上午 11:54:00 org.datanucleus.query.JPQLSingleStringParser
FINE:JPQL 单字符串,带有“从 MediaLibrary ml 中选择 ml,Media m WHERE m MEMBER OF ml.media AND m.id = :id”
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.query.AbstractJPQLQuery compileInternal
FINE:JPQL 查询:编译“SELECT ml FROM MediaLibrary ml, Media m WHERE m MEMBER OF ml.media AND m.id = :id”
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.query.AbstractJPQLQuery compileInternal
FINE:JPQL 查询:编译时间 = 2 毫秒
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.query.AbstractJPQLQuery compileInternal
精细:查询编译:
  [来自:ClassExpression(别名=ml),ClassExpression(别名=m)]
  [过滤器:DyadicExpression{InvokeExpression{[PrimaryExpression{ml.media}].contains(PrimaryExpression{m})} AND DyadicExpression{PrimaryExpression{m.id} = ParameterExpression{id}}}]
  [符号:id type=java.lang.String,m type=com.xonami.rest.db.Media,ml type=com.xonami.rest.db.MediaLibrary]
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.mongodb.query.JPQLQuery compileQueryFull
FINE:JPQL 查询:为数据存储编译“SELECT ml FROM MediaLibrary ml, Media m WHERE m MEMBER OF ml.media AND m.id = :id”
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.mongodb.query.QueryToMongoDBMapper compileFilter
FINE:无法编译要在数据存储中完全评估的过滤器:此映射器不支持调用表达式
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.mongodb.query.JPQLQuery compileQueryFull
FINE:JPQL 查询:数据存储的编译时间 = 0 毫秒
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.query.AbstractJPQLQuery compileInternal
FINE:JPQL 查询:编译“SELECT FROM MediaLibrary ml, Media m WHERE m MEMBER OF ml.media AND m.id = :id”
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.util.Imports resolveClassDeclaration
FINE:MediaLibrary 类被解析为 com.xonami.rest.db.MediaLibrary。它没有完全限定,因此必须查找;您可以通过完全限定查询中的类来避免查找(并提高性能)。
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.util.Imports resolveClassDeclaration
FINE:Class Media 被解析为 com.xonami.rest.db.Media。它没有完全限定,因此必须查找;您可以通过完全限定查询中的类来避免查找(并提高性能)。
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.query.AbstractJPQLQuery compileInternal
FINE:JPQL 查询:编译时间 = 1 毫秒
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.query.AbstractJPQLQuery compileInternal
精细:查询编译:
  [来自:ClassExpression(别名=ml),ClassExpression(别名=m)]
  [过滤器:DyadicExpression{InvokeExpression{[PrimaryExpression{ml.media}].contains(PrimaryExpression{m})} AND DyadicExpression{PrimaryExpression{m.id} = ParameterExpression{id}}}]
  [符号:id type=java.lang.String,m type=com.xonami.rest.db.Media,ml type=com.xonami.rest.db.MediaLibrary]
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.mongodb.query.JPQLQuery compileQueryFull
FINE:JPQL 查询:为数据存储编译“SELECT FROM MediaLibrary ml, Media m WHERE m MEMBER OF ml.media AND m.id = :id”
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.mongodb.query.QueryToMongoDBMapper compileFilter
FINE:无法编译要在数据存储中完全评估的过滤器:此映射器不支持调用表达式
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.mongodb.query.JPQLQuery compileQueryFull
FINE:JPQL 查询:数据存储的编译时间 = 0 毫秒
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.connection.ConnectionManagerImpl allocateConnection
FINE:连接添加到池中:org.datanucleus.store.mongodb.ConnectionFactoryImpl$ManagedConnectionImpl@517c804b [conn=null, commitOnRelease=true, closeOnRelease=true, closeOnTxnEnd=false] for key=org.datanucleus.ExecutionContextImpl@519549e 在工厂=ConnectionFactory:tx[org.datanucleus.store.mongodb.ConnectionFactoryImpl@4fb7a553]
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.mongodb.ConnectionFactoryImpl$ManagedConnectionImpl 获得NewConnection
FINE:托管连接 org.datanucleus.store.mongodb.ConnectionFactoryImpl$ManagedConnectionImpl@517c804b [conn=com.mongodb.DBApiLayer@61ffbcb, commitOnRelease=true, closeOnRelease=true, closeOnTxnEnd=false] 正在启动
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.mongodb.query.JPQLQuery performExecute
FINE:JPQL 查询:执行“SELECT FROM MediaLibrary ml, Media m WHERE m MEMBER OF ml.media AND m.id = :id” ...
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.mongodb.MongoDBUtils getObjectsOfCandidateType
FINE:使用对集合 MediaLibrary 的查询执行 find() for fields={ "mediaLibraryKey" : 1 , "owner" : 1 , "projectKey" : 1 , "quota" : 1} with filter={ }
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.mongodb.query.LazyLoadQueryResult 关闭连接
信息:读入查询“SELECT FROM MediaLibrary ml, Media m WHERE m MEMBER OF ml.media AND m.id = :id”的结果,因为使用的连接正在关闭
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.ExecutionContextImpl getObjectFromLevel1Cache
精细:对象“com.xonami.rest.db.MediaLibrary@774943d6”(id="com.xonami.rest.db.MediaLibrary:51bf3116b306d15598ec06c6")取自 1 级缓存 (loadedFlags="[NYYYY]") [缓存大小= 5]
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.query.evaluator.JavaQueryEvaluator 执行
FINE:JPQL 查询:使用内存评估处理“过滤器”子句(clause = "DyadicExpression{InvokeExpression{[PrimaryExpression{ml.media}].contains(PrimaryExpression{m})} AND DyadicExpression{PrimaryExpression{m.id} = 参数表达式{id}}}")
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.query.evaluator.JavaQueryEvaluator handleFilter
FINE:为 1 个候选人评估过滤器
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.connection.ConnectionManagerImpl allocateConnection
FINE:在池中找到连接:org.datanucleus.store.mongodb.ConnectionFactoryImpl$ManagedConnectionImpl@517c804b [conn=com.mongodb.DBApiLayer@61ffbcb, commitOnRelease=true, closeOnRelease=true, closeOnTxnEnd=false] for key=org.datanucleus .ExecutionContextImpl@519549e in factory=ConnectionFactory:tx[org.datanucleus.store.mongodb.ConnectionFactoryImpl@4fb7a553]
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.mongodb.MongoDBPersistenceHandler fetchObject
FINE:获取对象“com.xonami.rest.db.MediaLibrary@774943d6”(id=51bf3116b306d15598ec06c6)字段[媒体]
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.mongodb.MongoDBPersistenceHandler fetchObject
FINE:从 MongoDB 检索对象“com.xonami.rest.db.MediaLibrary@774943d6”(id="51bf3116b306d15598ec06c6")
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.mongodb.MongoDBUtils getObjectForObjectProvider
FINE:检索对象 { "_id" : { "$oid" : "51bf3116b306d15598ec06c6"}}
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.ExecutionContextImpl putObjectIntoLevel1Cache
FINE:对象“com.xonami.rest.db.Media@64afb650”(id="org.datanucleus.identity.IdentityReference@44cae5b8")添加到 1 级缓存(loadedFlags="[NNNNNNNNNNN]")
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager wrapSCOField
精细:对象“com.xonami.rest.db.Media@64afb650”(id="")的字段“应用程序”中的值被 SCO 包装器替换
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.types.simple.ArrayList 初始化
FINE:使用 options="cached,allowNulls" 为对象“com.xonami.rest.db.Media@64afb650”字段“applications”创建 SCO 包装器,包含 1 个条目
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager wrapSCOField
FINE:对象“com.xonami.rest.db.Media@64afb650”(id="")的字段“cTime”中的值被 SCO 包装器替换
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager wrapSCOField
精细:对象“com.xonami.rest.db.Media@64afb650”(id="")的字段“mediaStates”中的值被 SCO 包装器替换
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.types.simple.ArrayList 初始化
FINE:使用 options="cached,allowNulls" 为对象“com.xonami.rest.db.Media@64afb650”字段“mediaStates”创建 SCO 包装器,包含 0 个条目
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager wrapSCOField
精细:对象“com.xonami.rest.db.Media@64afb650”(id="")的字段“projectVLists”中的值被 SCO 包装器替换
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.types.simple.ArrayList 初始化
FINE:使用 options="cached,allowNulls" 为对象“com.xonami.rest.db.Media@64afb650”字段“projectVLists”创建 SCO 包装器,包含 0 个条目
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager wrapSCOField
FINE:对象“com.xonami.rest.db.Media@64afb650”(id="")的字段“propertyKeys”中的值被 SCO 包装器替换
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.types.simple.ArrayList 初始化
FINE:使用 options="cached,allowNulls" 为对象“com.xonami.rest.db.Media@64afb650”字段“propertyKeys”创建 SCO 包装器,包含 2 个条目
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager wrapSCOField
FINE:对象“com.xonami.rest.db.Media@64afb650”(id="")的字段“propertyValues”中的值被 SCO 包装器替换
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.types.simple.ArrayList 初始化
FINE:使用 options="cached,allowNulls" 为对象“com.xonami.rest.db.Media@64afb650”字段“propertyValues”创建 SCO 包装器,包含 2 个条目
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager wrapSCOField
FINE:对象“com.xonami.rest.db.Media@64afb650”(id="")的字段“searchList”中的值被 SCO 包装器替换
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.types.simple.ArrayList 初始化
FINE:使用 options="cached,allowNulls" 为对象“com.xonami.rest.db.Media@64afb650”字段“searchList”创建 SCO 包装器,包含 6 个条目
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager wrapSCOField
FINE:对象“com.xonami.rest.db.Media@64afb650”(id="")的字段“tags”中的值被 SCO 包装器替换
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.types.simple.ArrayList 初始化
FINE:使用 options="cached,allowNulls" 为对象“com.xonami.rest.db.Media@64afb650”字段“tags”创建 SCO 包装器,包含 2 个条目
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager wrapSCOField
FINE:对象“com.xonami.rest.db.MediaLibrary@774943d6”(id="com.xonami.rest.db.MediaLibrary:51bf3116b306d15598ec06c6")的字段“media”中的值被 SCO 包装器替换
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.types.simple.HashSet 初始化
FINE:使用 options="cached,allowNulls" 为对象“com.xonami.rest.db.MediaLibrary@774943d6”字段“media”创建 SCO 包装器,包含 1 个条目
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.mongodb.MongoDBPersistenceHandler fetchObject
精细:执行时间 = 4 毫秒
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.mongodb.ConnectionFactoryImpl$ManagedConnectionImpl 发布
FINE:托管连接 org.datanucleus.store.mongodb.ConnectionFactoryImpl$ManagedConnectionImpl@517c804b [conn=com.mongodb.DBApiLayer@61ffbcb, commitOnRelease=true, closeOnRelease=false, closeOnTxnEnd=false] 正在提交
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.mongodb.ConnectionFactoryImpl$ManagedConnectionImpl 发布
FINE:托管连接 org.datanucleus.store.mongodb.ConnectionFactoryImpl$ManagedConnectionImpl@517c804b [conn=com.mongodb.DBApiLayer@61ffbcb, commitOnRelease=true, closeOnRelease=false, closeOnTxnEnd=false] 提交的连接
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.AbstractStateManager updateLevel2CacheForFields
精细:对象“com.xonami.rest.db.MediaLibrary@774943d6”(id="51bf3116b306d15598ec06c6")正在更新二级缓存对象中的以下字段:[0]
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.query.evaluator.memory.InMemoryExpressionEvaluator getValueForPrimaryExpression
严重:找不到 com.xonami.rest.db.MediaLibrary 的 m 成员
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.query.evaluator.memory.InMemoryExpressionEvaluator getValueForPrimaryExpression
严重:找不到 com.xonami.rest.db.MediaLibrary 的 m 成员
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.mongodb.query.JPQLQuery performExecute
FINE:JPQL 查询:执行时间 = 9 毫秒
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.mongodb.ConnectionFactoryImpl$ManagedConnectionImpl 发布
FINE:托管连接 org.datanucleus.store.mongodb.ConnectionFactoryImpl$ManagedConnectionImpl@517c804b [conn=com.mongodb.DBApiLayer@61ffbcb, commitOnRelease=true, closeOnRelease=false, closeOnTxnEnd=false] 正在提交
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.mongodb.ConnectionFactoryImpl$ManagedConnectionImpl 发布
FINE:托管连接 org.datanucleus.store.mongodb.ConnectionFactoryImpl$ManagedConnectionImpl@517c804b [conn=com.mongodb.DBApiLayer@61ffbcb, commitOnRelease=true, closeOnRelease=false, closeOnTxnEnd=false] 提交的连接
2013 年 6 月 17 日上午 11:54:00 com.xonami.rest.LogWrapper 日志
信息:未找到。
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.ExecutionContextImpl performDetachOnClose
FINE:DetachOnClose:关闭管理器,分离所有当前对象......
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager 分离
FINE:从持久性中分离对象:“com.xonami.rest.db.ProjectLibrary@9ec265c”(深度=0)
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager unwrapSCOField
精细:对象“com.xonami.rest.db.ProjectLibrary@9ec265c”(id="com.xonami.rest.db.ProjectLibrary:51bf3116b306d15598ec06c5")正在将字段“ownedProjects”中的 SCO 包装器替换为未包装的值
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager 分离
FINE:从持久性中分离对象:“com.xonami.rest.db.XonamiUser@397b6178”(深度=1)
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager unwrapSCOField
FINE:对象“com.xonami.rest.db.XonamiUser@397b6178”(id="com.xonami.rest.db.XonamiUser:8f677878-ebde-4774-9604-5f78ba4844a5")在字段“creationDate”中有 SCO 包装器" 替换为展开的值
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager 分离
FINE:从持久性中分离对象:“com.xonami.rest.db.EmailAddress@131b92e6”(深度=2)
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager unwrapSCOField
FINE:对象“com.xonami.rest.db.EmailAddress@131b92e6”(id="com.xonami.rest.db.EmailAddress:51bf3117b306d15598ec06c8")将字段“created”中的 SCO 包装器替换为未包装的值
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.LifeCycleState changeState
FINE:对象“com.xonami.rest.db.EmailAddress@131b92e6”(id="com.xonami.rest.db.EmailAddress:51bf3117b306d15598ec06c8")有一个生命周期变化:“P_NONTRANS”->“DETACHED_CLEAN”
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager 断开连接
FINE:从 StateManager 断开 com.xonami.rest.db.EmailAddress@131b92e6 [pc=com.xonami.rest.db.EmailAddress@131b92e6,lifecycle=DETACHED_CLEAN]
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.ExecutionContextImpl removeObjectFromLevel1Cache
FINE:从 1 级缓存中删除 id="com.xonami.rest.db.EmailAddress:51bf3117b306d15598ec06c8" 的对象 [当前缓存大小 = 6]
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager unwrapSCOField
FINE:对象“com.xonami.rest.db.XonamiUser@397b6178”(id="com.xonami.rest.db.XonamiUser:8f677878-ebde-4774-9604-5f78ba4844a5")在字段“emails”中有 SCO 包装器" 替换为展开的值
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager 分离
FINE:从持久性中分离对象:“com.xonami.rest.db.MediaLibrary@774943d6”(深度=2)
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager 分离
FINE:从持久性中分离对象:“com.xonami.rest.db.Media@64afb650”(深度=2)
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager unwrapSCOField
精细:对象“com.xonami.rest.db.Media@64afb650”(id="")正在将字段“应用程序”中的 SCO 包装器替换为未包装的值
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager unwrapSCOField
FINE:对象“com.xonami.rest.db.Media@64afb650”(id="")将字段“cTime”中的 SCO 包装器替换为未包装的值
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager unwrapSCOField
FINE:对象“com.xonami.rest.db.Media@64afb650”(id="")将字段“mediaStates”中的 SCO 包装器替换为未包装的值
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager unwrapSCOField
精细:对象“com.xonami.rest.db.Media@64afb650”(id="")将字段“projectVLists”中的 SCO 包装器替换为未包装的值
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager unwrapSCOField
FINE:对象“com.xonami.rest.db.Media@64afb650”(id="")将字段“propertyKeys”中的 SCO 包装器替换为未包装的值
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager unwrapSCOField
FINE:对象“com.xonami.rest.db.Media@64afb650”(id="")将字段“propertyValues”中的 SCO 包装器替换为未包装的值
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager unwrapSCOField
精细:对象“com.xonami.rest.db.Media@64afb650”(id="")正在将字段“searchList”中的 SCO 包装器替换为未包装的值
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager unwrapSCOField
FINE:对象“com.xonami.rest.db.Media@64afb650”(id="")将字段“tags”中的 SCO 包装器替换为未包装的值
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.LifeCycleState changeState
FINE:对象“com.xonami.rest.db.Media@64afb650”(id="org.datanucleus.identity.IdentityReference@44cae5b8")有生命周期变化:“P_CLEAN”->“DETACHED_CLEAN”
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.ExecutionContextImpl evictFromTransaction
FINE:对象“com.xonami.rest.db.Media@64afb650”(id="org.datanucleus.identity.IdentityReference@44cae5b8")被从事务缓存中驱逐
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.ExecutionContextImpl evictFromTransaction
FINE:对象“com.xonami.rest.db.Media@64afb650”(id="org.datanucleus.identity.IdentityReference@44cae5b8")不是事务性的
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager 断开连接
FINE:从 StateManager 断开 com.xonami.rest.db.Media@64afb650 [pc=com.xonami.rest.db.Media@64afb650,生命周期=DETACHED_CLEAN]
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.ExecutionContextImpl removeObjectFromLevel1Cache
FINE:从 1 级缓存中删除 id="org.datanucleus.identity.IdentityReference@44cae5b8" 的对象 [当前缓存大小 = 5]
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager unwrapSCOField
精细:对象“com.xonami.rest.db.MediaLibrary@774943d6”(id="com.xonami.rest.db.MediaLibrary:51bf3116b306d15598ec06c6")将字段“媒体”中的 SCO 包装器替换为未包装的值
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.LifeCycleState changeState
精细:对象“com.xonami.rest.db.MediaLibrary@774943d6”(id="com.xonami.rest.db.MediaLibrary:51bf3116b306d15598ec06c6")具有生命周期变化:“P_NONTRANS”->“DETACHED_CLEAN”
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager 断开连接
FINE:从 StateManager 断开 com.xonami.rest.db.MediaLibrary@774943d6 [pc=com.xonami.rest.db.MediaLibrary@774943d6,lifecycle=DETACHED_CLEAN]
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.ExecutionContextImpl removeObjectFromLevel1Cache
FINE:从 1 级缓存中删除 id="com.xonami.rest.db.MediaLibrary:51bf3116b306d15598ec06c6" 的对象 [当前缓存大小 = 4]
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager unwrapSCOField
FINE:对象“com.xonami.rest.db.XonamiUser@397b6178”(id="com.xonami.rest.db.XonamiUser:8f677878-ebde-4774-9604-5f78ba4844a5")在字段“mediaLibraries”中有 SCO 包装器" 替换为展开的值
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager 分离
FINE:从持久性中分离对象:“com.xonami.rest.db.payment.PaymentInfo@6b04d3c8”(深度=2)
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.LifeCycleState changeState
FINE:对象“com.xonami.rest.db.payment.PaymentInfo@6b04d3c8”(id="com.xonami.rest.db.payment.PaymentInfo:51bf3116b306d15598ec06c7")具有生命周期变化:“P_NONTRANS”->“DETACHED_CLEAN”
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager 断开连接
FINE:从 StateManager 断开 com.xonami.rest.db.payment.PaymentInfo@6b04d3c8 [pc=com.xonami.rest.db.payment.PaymentInfo@6b04d3c8,lifecycle=DETACHED_CLEAN]
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.ExecutionContextImpl removeObjectFromLevel1Cache
FINE:从 1 级缓存中删除 id="com.xonami.rest.db.payment.PaymentInfo:51bf3116b306d15598ec06c7" 的对象 [当前缓存大小 = 3]
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager unwrapSCOField
FINE:对象“com.xonami.rest.db.XonamiUser@397b6178”(id="com.xonami.rest.db.XonamiUser:8f677878-ebde-4774-9604-5f78ba4844a5")在字段“paymentInfos”中有 SCO 包装器" 替换为展开的值
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager unwrapSCOField
精细:对象“com.xonami.rest.db.XonamiUser@397b6178”(id="com.xonami.rest.db.XonamiUser:8f677878-ebde-4774-9604-5f78ba4844a5")在字段“projectLibraries”中有 SCO 包装器" 替换为展开的值
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager unwrapSCOField
FINE:对象“com.xonami.rest.db.XonamiUser@397b6178”(id="com.xonami.rest.db.XonamiUser:8f677878-ebde-4774-9604-5f78ba4844a5")在字段“propertyKeys”中有 SCO 包装器" 替换为展开的值
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager unwrapSCOField
FINE:对象“com.xonami.rest.db.XonamiUser@397b6178”(id="com.xonami.rest.db.XonamiUser:8f677878-ebde-4774-9604-5f78ba4844a5")在字段“propertyValues”中有 SCO 包装器" 替换为展开的值
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager unwrapSCOField
FINE:对象“com.xonami.rest.db.XonamiUser@397b6178”(id="com.xonami.rest.db.XonamiUser:8f677878-ebde-4774-9604-5f78ba4844a5")在字段“searchList”中有 SCO 包装器" 替换为展开的值
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager unwrapSCOField
FINE:对象“com.xonami.rest.db.XonamiUser@397b6178”(id="com.xonami.rest.db.XonamiUser:8f677878-ebde-4774-9604-5f78ba4844a5")在字段“tags”中有 SCO 包装器" 替换为展开的值
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.LifeCycleState changeState
精细:对象“com.xonami.rest.db.XonamiUser@397b6178”(id="com.xonami.rest.db.XonamiUser:8f677878-ebde-4774-9604-5f78ba4844a5")具有生命周期变化:“P_NONTRANS”- >“DETACHED_CLEAN”
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager 断开连接
FINE:从 StateManager 断开 com.xonami.rest.db.XonamiUser@397b6178 [pc=com.xonami.rest.db.XonamiUser@397b6178,生命周期=DETACHED_CLEAN]
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.ExecutionContextImpl removeObjectFromLevel1Cache
FINE:从 1 级缓存中删除 id="com.xonami.rest.db.XonamiUser:8f677878-ebde-4774-9604-5f78ba4844a5" 的对象 [当前缓存大小 = 2]
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.LifeCycleState changeState
FINE:对象“com.xonami.rest.db.ProjectLibrary@9ec265c”(id="com.xonami.rest.db.ProjectLibrary:51bf3116b306d15598ec06c5")有一个生命周期变化:“P_NONTRANS”->“DETACHED_CLEAN”
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.state.JDOStateManager 断开连接
FINE:从 StateManager 断开 com.xonami.rest.db.ProjectLibrary@9ec265c [pc=com.xonami.rest.db.ProjectLibrary@9ec265c,生命周期=DETACHED_CLEAN]
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.ExecutionContextImpl removeObjectFromLevel1Cache
FINE:从 1 级缓存中删除 id="com.xonami.rest.db.ProjectLibrary:51bf3116b306d15598ec06c5" 的对象 [当前缓存大小 = 1]
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.ExecutionContextImpl performDetachOnClose
FINE: DetachOnClose : 完成分离
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.connection.ConnectionManagerImpl closeAllConnections
FINE:在池中找到连接:org.datanucleus.store.mongodb.ConnectionFactoryImpl$ManagedConnectionImpl@517c804b [conn=com.mongodb.DBApiLayer@61ffbcb, commitOnRelease=true, closeOnRelease=false, closeOnTxnEnd=false] for key=org.datanucleus .ExecutionContextImpl@519549e in factory=ConnectionFactory:tx[org.datanucleus.store.mongodb.ConnectionFactoryImpl@4fb7a553] 但所有者对象关闭所以关闭连接
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.store.connection.ConnectionManagerImpl$1 managedConnectionPostClose
FINE:从池中删除连接:org.datanucleus.store.mongodb.ConnectionFactoryImpl$ManagedConnectionImpl@517c804b [conn=com.mongodb.DBApiLayer@61ffbcb, commitOnRelease=true, closeOnRelease=false, closeOnTxnEnd=false] for key=org.datanucleus .ExecutionContextImpl@519549e in factory=ConnectionFactory:tx[org.datanucleus.store.mongodb.ConnectionFactoryImpl@4fb7a553]
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.ExecutionContextImpl disconnectObjectProvidersFromCache
FINE:一级缓存已清除
2013 年 6 月 17 日上午 11:54:00 org.datanucleus.ExecutionContextImpl 关闭
FINE:ExecutionContext“org.datanucleus.ExecutionContextImpl@519549e”关闭
2013 年 6 月 17 日上午 11:54:00 org.restlet.service.ConverterService toRepresentation
4

1 回答 1

0

FINE:无法编译要在数据存储中完全评估的过滤器:此映射器不支持调用表达式

因此目前尚未实现将 JPQL“collField.contains(val)”(相当于您为查询输入的内容)转换为 MongoDB 查询,因此无法在数据存储中对其进行评估。由于您知道它需要转换成什么,因此您可以轻松获取DataNucleus MongoDB 插件的代码并找到QueryToMongoDBMapper 类并为该特定查询提供支持。

于 2013-06-17T16:06:32.097 回答