- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 Morphia 将 HashMap 嵌入到我的 MongoDB 中。在与此处的帖子相同的警告之后:
Morphia - Class not found defined in dbObj注意:为了彻底起见,这篇文章中的建议没有帮助。
我终于弄清楚,如果我向嵌入字段添加 @Property 属性,它就会抑制警告。
不幸的是,这现在导致了一个问题,我似乎没有一个 HashMap 对象的数组,而是一个无法转换回我的 HashMap 类型的 BasicDBObject 数组
上述帖子的答案还建议重写 morphia 的类加载器。不幸的是,他们在示例中使用的 getter 现在受到保护,因此我现在无法返回 JavaPlugin.getClassLoader()
完整错误:
[23:29:01 ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'quest' in plugin ExploreRPG v1.0-SNAPSHOT
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:47) ~[patched_1.14.4.jar:git-Paper-176]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:159) ~[patched_1.14.4.jar:git-Paper-176]
at org.bukkit.craftbukkit.v1_14_R1.CraftServer.dispatchCommand(CraftServer.java:739) ~[patched_1.14.4.jar:git-Paper-176]
at net.minecraft.server.v1_14_R1.PlayerConnection.handleCommand(PlayerConnection.java:1800) ~[patched_1.14.4.jar:git-Paper-176]
at net.minecraft.server.v1_14_R1.PlayerConnection.a(PlayerConnection.java:1608) ~[patched_1.14.4.jar:git-Paper-176]
at net.minecraft.server.v1_14_R1.PacketPlayInChat.a(PacketPlayInChat.java:47) ~[patched_1.14.4.jar:git-Paper-176]
at net.minecraft.server.v1_14_R1.PacketPlayInChat.a(PacketPlayInChat.java:5) ~[patched_1.14.4.jar:git-Paper-176]
at net.minecraft.server.v1_14_R1.PlayerConnectionUtils.lambda$ensureMainThread$0(PlayerConnectionUtils.java:23) ~[patched_1.14.4.jar:git-Paper-176]
at net.minecraft.server.v1_14_R1.TickTask.run(SourceFile:18) ~[patched_1.14.4.jar:git-Paper-176]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeTask(IAsyncTaskHandler.java:136) ~[patched_1.14.4.jar:git-Paper-176]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) ~[patched_1.14.4.jar:git-Paper-176]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeNext(IAsyncTaskHandler.java:109) ~[patched_1.14.4.jar:git-Paper-176]
at net.minecraft.server.v1_14_R1.MinecraftServer.aX(MinecraftServer.java:1013) ~[patched_1.14.4.jar:git-Paper-176]
at net.minecraft.server.v1_14_R1.MinecraftServer.executeNext(MinecraftServer.java:1006) ~[patched_1.14.4.jar:git-Paper-176]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.awaitTasks(IAsyncTaskHandler.java:119) ~[patched_1.14.4.jar:git-Paper-176]
at net.minecraft.server.v1_14_R1.MinecraftServer.sleepForTick(MinecraftServer.java:990) ~[patched_1.14.4.jar:git-Paper-176]
at net.minecraft.server.v1_14_R1.MinecraftServer.run(MinecraftServer.java:923) ~[patched_1.14.4.jar:git-Paper-176]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_221]
Caused by: java.lang.ClassCastException: com.mongodb.BasicDBObject cannot be cast to net.exploremc.explorerpg.controllers.user.QuestProgress
at net.exploremc.explorerpg.controllers.User.getActiveQuests(User.java:148) ~[?:?]
at net.exploremc.explorerpg.commands.QuestCMD.onCommand(QuestCMD.java:23) ~[?:?]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[patched_1.14.4.jar:git-Paper-176]
... 17 more
用户类别:
@Entity(value = "users", noClassnameStored = true)
public class User {
@Transient public static HashMap<UUID, User> usersList = new HashMap<>();
@Transient private static Datastore datastore = ExploreRPG.getDatabase().getDatastore();
@Id private String id;
@Transient private Player player;
@Indexed private String uuid;
private List<String> ipHistory = new ArrayList<>();
private List<String> nameHistory = new ArrayList<>();
@Embedded @Property("quests") private HashMap<String, QuestProgress> quests = new HashMap<>(); // This is the problem class
public User(){ }
public User(Player player) {
this.player = player;
this.ipHistory.add(player.getAddress().getHostString());
this.uuid = player.getUniqueId().toString();
this.nameHistory.add(player.getName());
}
public void storeUser() {
datastore.save(this);
}
public void updateUser(){
Query<User> updateQuery = datastore.createQuery(User.class).field("uuid").equal(uuid);
UpdateOperations<User> ops = datastore.createUpdateOperations(User.class)
.set("ipHistory", ipHistory)
.set("nameHistory", nameHistory)
.set("quests", quests);
datastore.update(updateQuery, ops);
}
public static boolean doesUserExist(Player player){
Query<User> query = datastore.find(User.class).field("uuid").equal(player.getUniqueId().toString());
User user = query.first();
return user != null;
}
public static User getUserFromDB(Player player){
Query<User> query = datastore.find(User.class).field("uuid").equal(player.getUniqueId().toString());
User user = query.first();
user.quests = query.first().quests;
user.player = player;
return user;
}
}
导致此错误的实现:
public List<QuestProgress> getActiveQuests(){
List<QuestProgress> activeQuests = new ArrayList<>();
for (QuestProgress quest : quests.values()) {
if(!quest.isCompleted())
activeQuests.add(quest);
}
return activeQuests;
}
我希望能够循环遍历 quest
HashMap ,但是程序在进入 foreach 循环时失败了。检查数据类,显示 map 数据不符合预期。相反,该值是 BasicDBObject 类型,我相信这就是导致我的错误的原因 /image/3herm.png
我尝试将这个新结构重新类型转换到我的原始 map 中,但没有成功。
我使用的是 Morphia core 1.5.3mongo-java-驱动程序版本 3.11.0使用 Spigot 1.14.4 API
感谢任何帮助
最佳答案
您是否尝试过在该类型上显式调用 map()
? Morphia 可以执行一些延迟映射,但这可能是一个被破坏的代码路径。
关于java - Morphia - BasicDBObject 无法转换为 MyClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57839741/
在学习 C++ 的过程中,我偶然发现了文章 Writing Copy Constructors and Assignment Operators它提出了一种机制来避免复制构造函数和赋值运算符之间的代码
显然,以这种方式实现基于类的实例方法是 JavaScript 中的一个习惯用法: function MyClass(){...} MyClass.prototype.methodA = functio
我尝试使用泛型为 NSManagedObject 的子类提供通用方法,但当 Swift 似乎无法找到/将泛型转换为具体类时,我收到错误: /// NSManagedObject+Helper.swif
有什么区别 MyClass mc = MyClass(); 和 MyClass mc; 在 C++ 中? 最佳答案 第一个调用复制构造函数,以临时对象作为参数 - MyClass() 创建临时对象。
考虑不涉及复制省略的情况(C++17 之前)。 来自 cppreference(再次假设 C++14): Temporary objects are created in the following
这里有一些代码: class MyClass { public: int y; }; int main() { MyClass item1; MyClass item2 = M
这种类型转换表达式之间有什么区别?什么是更好的? // One way var t:MyClass = MyClass(o); // Another var t:MyClass = o as MyCl
为了跟踪实例,我们有一个数组 MyClass[] mc = new MyClass[5]; 我想在构造函数调用本身期间保存在此数组中创建的 MyClass 实例。 类似这样的事情: public cl
我在对一个非常简单的类进行子类化时遇到问题,该类也有返回初始类的方法。 public class MyClass { public MyClass(){ } public MyC
我有一个 std::list在我的课上我有 myclass::operator bool PComp(const T * const & a, const T * const & b) { re
我正在编写一个简单的程序来计算面积,我得到的错误是: no matching function for call to 'myclass::myclass()' 我无法理解此错误的原因以及解决方法。
我希望我可以针对这个问题逐字发布我的项目,但我不能。 基本上,我有以下类(class): class Lowest { someValue: string constructo
为什么可以施放MyClass反对 List没有编译错误(只是有“未检查”警告),尽管 MyClass未实现 List 接口(interface),同时无法进行强制转换,例如 String类同样的方式。
我正在这里试验一下。 假设我有一个类: static class MyClass { static String property = "myProperty"; } 和一个方法: publi
我正在尝试为单元测试目的创建一个 stub 类。 Stub 指向完全相同的 EmployeeData 类定义,但编译器认为它们是不同的,不知何故。结果,我不断收到以下消息: Cannot implic
为什么我不能通过 Point src[1][4] = { { Point(border,border), Point(border,h-border),
我有一个正在创建的模板类,我需要一个方法来返回该类的对象并对其进行分配。我有一个方法接收 2 个对象、创建一个新对象并返回它,以及重载赋值运算符以正确复制成员。 我试过用两种方法来做到这一点(两种方法
在 C# 中是否可以在运行时创建一个类型,该类型继承自泛型类,其中基类的模板参数是正在构造的当前类?这将编译正常: // I have this class: public class OtherCl
我有几个带有“listingThumb”类的 div CSS: .listingThumb{ height:50px; width:50px; overflow:hidden; } HTML: 我希
例如,我有一个包含不同容器的类来保存由 new 运算符创建的 MyClass 对象: class A{ MyClass* m; vector vm; vector > vvm;
我是一名优秀的程序员,十分优秀!