标签: morphia

Morphia保存新实体而不是更新_id

抱歉非常愚蠢的问题.我正在使用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中保存新实体.

java mongodb object-identity morphia

4
推荐指数
1
解决办法
5431
查看次数

com.google.code.morphia的POM:morphia:jar:1.00-SNAPSHOT丢失,没有可用的依赖项信息

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)

java mongodb pom.xml maven morphia

4
推荐指数
1
解决办法
4889
查看次数

如何用morphia删除数组的第n个元素

例如,我有一份文件

{
_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)

有一种方法可以用吗啡吗?

list updates morphia

4
推荐指数
1
解决办法
1196
查看次数

如何使用Morphia存储空字段

默认情况下,Morphia不存储空/空字段.有没有办法实现这个?

java mongodb nosql morphia

4
推荐指数
1
解决办法
1987
查看次数

无法使用Morphia从Mongo数据库中提取 - 没有可用的构造函数

所以我试图将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)

java mongodb shiro morphia

4
推荐指数
1
解决办法
3615
查看次数

如何使用mongodb在java应用程序的日志文件中记录所有查询?

我有一个使用morphia与mongodb一起工作的java应用程序.

我想将发送到mongodb的所有查询记录在一个文件中,我可以对其进行分析以提高性能.但我找不到记录它们的方法.

我知道mongodb可以在system.profile集合中记录查询,但我仍然需要一个日志文件.

怎么做?

logging mongodb morphia

3
推荐指数
1
解决办法
2454
查看次数

如何使用Morphia查询最新插入的项目

如何使用Morphia查询最新插入的项目以及如何获取集合的大小?

morphia

3
推荐指数
1
解决办法
3085
查看次数

在Morphia中,我如何更新ArrayList中的一个嵌入对象

使用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)

java mongodb morphia

3
推荐指数
1
解决办法
6257
查看次数

如何用morphia注释复合键上的索引

我正在使用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)

提前致谢.

mongodb morphia mongodb-java

3
推荐指数
1
解决办法
4349
查看次数

引用的延迟加载

我有一个带有成员的 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),引用也会被加载,并且我收到消息“警告:由于缺少依赖项而无法进行延迟加载。” 登录到控制台。

我缺少哪些依赖项以及如何包含它们?

java mongodb morphia

3
推荐指数
1
解决办法
1623
查看次数