抱歉非常愚蠢的问题.我正在使用Morphia 1.00.有一些实体:
@Entity("Vacancy")
public class Vacancy {
@Id
private ObjectId id;
@Version
long version;
private String title;
Run Code Online (Sandbox Code Playgroud)
和其他一些领域,二传手和吸气剂.试图保存相同的实例:
Vacancy vacancy1 = new Vacancy();
vacancy1.setTitle("Dumm");
Vacancy vacancy2 = new Vacancy();
vacancy2.setTitle("Dumm");
vacancyDao.getDatastore().save(vacancy1);
vacancyDao.getDatastore().save(vacancy2);
Run Code Online (Sandbox Code Playgroud)
据我所知,mongoDb必须执行upsert命令(意思是"如果存在则更新;如果缺少则插入(单个文档)").但是,mongo不是仅仅更新_id字段,而是在DB中保存新实体.
com.google.code.morphia的POM:morphia:jar:1.00-SNAPSHOT丢失,没有可用的依赖项信息
<scm>
<connection>scm:svn:svn://morphia.googlecode.com/svn/mavenrepo/</connection>
<developerConnection>scm:svn:svn://morphia.googlecode.com/svn/mavenrepo/</developerConnection>
</scm>
Run Code Online (Sandbox Code Playgroud) 例如,我有一份文件
{
_id: 1,
list:[
{
key: "a",
"value":"ssss"
},
{
key: "b",
"value":"ssss"
},
{
key: "c",
"value":"ssss"
},
]
}
Run Code Online (Sandbox Code Playgroud)
我需要从列表中删除带"c"键的元素.
使用mongo控制台命令,我这样做,并删除正确的密钥
db.test.update({{_id: 1},{"$pull" : {"list" : { "key" : "c"}}},false,false)
Run Code Online (Sandbox Code Playgroud)
有一种方法可以用吗啡吗?
所以我试图将sha265中的密码保存到mongo db中并使用Apache Shiro框架来授权用户登录,同时尝试从DB中拉出我的morphia运行时异常,这里是代码:
用户类:
public class User implements Serializable{
@Id
private ObjectId id;
private String name;
private String password;
private SimpleByteSource passwordSalt;
@Embedded
private TenantId tenantId;
private Set<String> roles = new HashSet<>();
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", password="
+ password + ", passwordSalt=" + passwordSalt
+ ", tenantId=" + tenantId + ", roles=" + roles + "]";
}
public SimpleByteSource getPasswordSalt() {
return passwordSalt;
}
public …Run Code Online (Sandbox Code Playgroud) 我有一个使用morphia与mongodb一起工作的java应用程序.
我想将发送到mongodb的所有查询记录在一个文件中,我可以对其进行分析以提高性能.但我找不到记录它们的方法.
我知道mongodb可以在system.profile集合中记录查询,但我仍然需要一个日志文件.
怎么做?
使用Mongodb和Morphia并看到很多高级答案如何做到这一点真的很新.
我希望它简单,如果这是可以做到的,我有这个@Embedded对象调用
fileObjects包含Files的对象.
我无法更新内部的字段Files.
我只想更新一个字段f.ex的String fileHash.
@Entity
public class BatchData {
@Id private ObjectId id;
@Embedded
public ArrayList<Files> fileObjects = new ArrayList<Files>();
}
Run Code Online (Sandbox Code Playgroud)
更新..
在Morphia阅读维基更新不要"真的"说明只有当数组包含Integer这样的时候才能这样做:
@Embedded
List<Integer> roomNumbers = new ArrayList<Integer>();
Run Code Online (Sandbox Code Playgroud)
以下是我到目前为止的尝试:
mongo.createUpdateOperations(BatchData.class).add("fileObjects", Files, false);
Run Code Online (Sandbox Code Playgroud)
在Files此代码插入已经在蒙戈.在false没有检测到,并在阵列的末尾插入.我可以添加一个唯一ID,Files以便检测到Files插入是否存在于数组中,然后只更新它?
@Embedded
public class Files
{
public Files() {
}
public int position;
public String fileName = "";
public String fileHash = …Run Code Online (Sandbox Code Playgroud) 我正在使用morphia github 1.2.2版.我知道如何在morphia实体上的一个字段上注释索引,但有没有办法在两个字段的组合上注释索引.例如,如果我想在字段a和b上有一个复合索引,那么下一个类的注释是什么.
@Entity
public class TestClass
{
@Property("a")
private int fieldA;
@Property("b")
private int fieldB;
//how to annotate index of compound key fieldA and fieldB using morphia index annotation?
}
Run Code Online (Sandbox Code Playgroud)
提前致谢.
我有一个带有成员的 java 类:
@Entity
public class TypeA {
...
@Reference(lazy = true) private TypeB anObj;
...
}
Run Code Online (Sandbox Code Playgroud)
现在,当我执行 a 时datastore.find(TypeA.class).asList().get(0),引用也会被加载,并且我收到消息“警告:由于缺少依赖项而无法进行延迟加载。” 登录到控制台。
我缺少哪些依赖项以及如何包含它们?