当前位置: 首页 > 面试题库 >

如何在没有本机查询的情况下将理论查找到JSON字段

麻超
2023-03-14
问题内容

jsondoctrine 2MySQL数据库中)使用列。实际上,我使用json类似

$rsm = new ResultSetMappingBuilder($entityManager);
$rsm->addRootEntityFromClassMetadata(\blabla\MyObject::class, 'o');
$query = $entityManager->createNativeQuery('select o.* from my_objects o where json_extract(jsonData, "$.test.key1")= "value1"', $rsm); 
//jsonData column contains {"test": {"key1" : "value1"}}
$result = $query->getResult();

如果没有本机查询机制,是否可能像这样进行查询?(如findBy)

在此先感谢您的帮助 ;)


问题答案:

我解决了我的问题。 我找到了DQL的扩展名。

$queryBuilder = $entityManager->createQueryBuilder();
$query = $queryBuilder
    ->select("o")
    ->from(\bla\bla\MyObject::class, "o")
    ->where("JSON_EXTRACT(o.jsonData, :jsonPath) = :value ")
    ->setParameter('jsonPath', '$.test.key1')
    ->setParameter('value', 'value1')
    ->getQuery();

$co = $query->getResult();


 类似资料:
  • 如果您说这是不可能的,那么我必须坚持HQL,我会在这里张贴的查询,我将需要您的帮助写下基于HQL的类(表)创建和基于HQL的查询字符串。 此外,如果您可以,请给我一个示例查询与夫妇或3个表联接,以及如何设置参数的SQL。

  • 我有一个具有两个属性的dynamoDB表: A: 主分区键 B: 主排序键 我想使用属性B查询这个表,因为我不知道A的值。可以这样做吗? 是否可以将B设为GSI(全局二级索引),如何使用B查询表,因为B已经是排序键。

  • 当我运行我的新android项目时,我得到了错误: 因此,正如error所说,复制的本机库不在/verdor/lib或/system/lib中,在我的情况下如何解决这个问题? (我解压缩了apk包,在lib/there libcalculate.so下面) 但是当我运行我的应用程序时,同样的错误抛出:

  • 我想从另一个Android项目中使用一个现有的原生库,所以我只是将NDK构建的库(libCalculate.so)复制到我的新Android项目中。在我的新Android项目中,我创建了一个文件夹并将libcalculate.so放在那里。没有JNI/文件夹。我的测试设备具有ARM架构。 在我的java代码中,我通过以下方式加载库: (我解压缩了apk包,在lib/下面有libcalculate.

  • TL;DR:将@webservlet(“/find-customers”)放在servlet(通过Tomcat 7部署)的开头并不是将servlet映射到host:port/webproject/find-customers中,即使servlet位于src文件夹中。