问题标签 [morphia]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 为什么 MongoDB Java 驱动程序/Morphia 两次预先设置一个属性?
这是我的(示例)对象。除了 Morphia 所需的内容外,我没有添加任何其他注释:
和TreeHouse
对象:
我正在尝试type
使用正则表达式查询。这是我正在使用的 MongoDB 查询(并且已被证明可以通过命令行工作):
我可以使用filter
来自Query
对象的方法在 Java 中生成这个确切的字符串:
但是,当我尝试在 Java 中运行搜索时,我得到ValidationException
:
注意翻倍house.house.type
。
我正在使用 0.99 版的 Morphia,并使用 2.5 版的 MongoDB Java 驱动程序。我没有正确地做某事吗?或者这是一个已在较新版本中修复的问题?
java - 持久化到 Mongo 数据库时出现 NumberFormatException
我正在创建一个简单的VO
对象,然后尝试将其持久化到 Mongo 数据库中,NumberFormatException
最糟糕的是,没有从对象本身抛出异常,因为现在没有设置对象的任何属性,这个异常正在杀死我,我不确定如何处理。
这是引发异常的一段代码:
这是异常strace:
我一直在调试这个问题一段时间,还没有找到起点,有什么建议吗?
这是持久化方法:
更新
morphia - 如何使用 Morphia 查询最新插入的项目
如何使用 Morphia 查询最新插入的项目以及如何获取集合的大小?
mongodb - morphia 模块 ObjectIdBinder 已定义错误
我是 morphia、mongoDB 和 playframework 的新手。我正在尝试将这些用于生产。上周我上次运行它时,我的代码运行良好。今天早上,我不断收到以下错误,我不知道如何解决它:
10:20:53,048 信息 ~ 开始 /home/user/NetBeansProjects/um 10:20:53,056 警告 ~ 在 application.conf 中声明模块已弃用。改用dependencies.yml (module.morphia) 10:20:53,060 INFO ~ Module morphia 可用 (/home/user/play-1.2.2/modules/morphia-1.2.1beta6) 10:20:53,062 INFO ~ Module morphia可用 (/home/user/play-1.2.2/modules/morphia-1.2.1beta6) 10:20:54,538 WARN ~ 你正在运行 Play!在 DEV 模式下 10:20:54,828 INFO ~ 在端口 9000 上侦听 HTTP(等待第一个请求开始)... 10:21:03,741 错误 ~
@67c6i5h2e 请求 GET / 的内部服务器错误 (500)
编译错误(在第 12 行附近的 {module:morphia-1.2.1beta6}/app/morphia/ObjectIdBinder.java 中)文件 {module:morphia-1.2.1beta6}/app/morphia/ObjectIdBinder.java 无法编译。引发的错误是:类型 ObjectIdBinder 已定义
play.exceptions.CompilationException:类型 ObjectIdBinder 已经在 play.classloading.ApplicationCompiler$2.acceptResult(ApplicationCompiler.java:246) 的 org.eclipse.jdt.internal.compiler.Compiler.handleInternalException(Compiler.java:672) 中定义org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:516) 在 play.classloading.ApplicationCompiler.compile(ApplicationCompiler.java:278) 在 play.classloading.ApplicationClassloader.getAllClasses(ApplicationClassloader.java:412)在 play.Play.start(Play.java:482) 在 play.Play.detectChanges(Play.java:596) 在 play.Invoker$Invocation.init(Invoker.java:186) 在 Invocation.HTTP Request(Play!)
我也不记得更改代码中的任何内容。
java - MongoDB 组合键
我刚刚开始使用 MongoDb,我注意到我得到了很多重复的记录,这些记录是我想要唯一的。我想知道如何为我的数据使用复合键,我正在寻找有关如何创建它们的信息。最后,我使用 Java 来访问 mongo 和 morphia 作为我的 ORM 层,因此在您的答案中包含这些内容会很棒。
java - Morphia 保存新实体而不是更新 _id
对不起,非常愚蠢的问题。我正在使用 Morphia 1.00。有一些实体:
以及其他一些字段,setter 和 getter。尝试保存相同的实例:
据我所知,mongoDb 必须执行 upsert 命令(意思是“如果存在则更新;如果缺少则插入(单个文档)”)。但是,mongo 不仅仅是更新 _id 字段,而是将新实体保存在数据库中。
java - 使用 MongoDB 进行单元测试
我选择的数据库是 MongoDB。我正在编写一个数据层 API 来从客户端应用程序中抽象实现细节——也就是说,我本质上是在提供一个公共接口(一个充当 IDL 的对象)。
我正在以 TDD 方式测试我的逻辑。在每个单元测试之前,@Before
调用一个方法来创建一个数据库单例,之后,当测试完成时,@After
调用一个方法来删除数据库。这有助于促进单元测试之间的独立性。
几乎所有的单元测试,即执行上下文查询,都需要预先发生某种插入逻辑。我的公共接口提供了一个插入方法——但是,将此方法用作每个单元测试的前导逻辑似乎是不正确的。
我确实需要某种模拟机制,但是,我在模拟框架方面没有太多经验,而且 Google 似乎没有返回任何可能与 MongoDB 一起使用的模拟框架。
其他人在这些情况下会怎么做?也就是说,人们如何对与数据库交互的代码进行单元测试?
此外,我的公共接口连接到在外部配置文件中定义的数据库 - 使用此连接进行单元测试似乎不正确 - 再次,这种情况会从某种模拟中受益吗?
java - Morphia 泛型 - 不可能?
我正在尝试通过 Mongo/Morphia 保存泛型列表(M)。当我尝试保存时出现此错误:
com.google.code.morphia.mapping.MappingException:不支持通用类型类:= class java.lang.Object
这是否意味着 Morphia 根本不支持泛型?有没有可行的替代方案?使用泛型为我节省了 16 个类。必须有一种更简单的方法是允许的。
令人惊讶的是,我无法找到任何有用的信息来解决这个错误。
mongodb - Mongo中错误的ObjectId
我对 Mongo DB 有疑问。不知何故,我在行条目中有一个错误的 ObjectId。ObjectId 的长度无效。
我如何强制 Mongo 删除该 ObjectId ?
谢谢
mongodb - 什么是最快的,@Entity 或 @Embedded?
我是 NoSql MongoDb 的新手(今天)并试图了解 Morphia。
我想要一个这样的@Entity:
如果我有 3 个名为Stat
Friendlist
Userdata的表(集合)
,我将 UserData.Class 保存在 Userdata 权限中,并将 Statistic.Class 保存在 Stat 中,依此类推...
我的想法是,如果我给每个用户一个唯一的 ObjectId UUID nr,然后每个 Statistic 和 FriendList 都有这个 UUID nr 作为 ObjectId。因为如果程序只需要运行统计信息,它将仅加载/针对统计信息工作。
如果有像 18000/小时的请求来获取 UserData,那么像这样声明它们会不会更快:(
我使用相同的 ObjectId,它们存储在单独的集合(表)中