小编amo*_*fis的帖子

Criteria API子子实体id的路径

我想将我的JPAQL查询转换为条件API查询.

考虑这样的查询:

SELECT e FROM Entity e WHERE e.parent.id = :parentId
Run Code Online (Sandbox Code Playgroud)

WHERE 部分转换为:

Path<Long> parentId = root.get(Entity_.parent).get(ParentEntity_.id);
Predicate whereParentId = builder.equal(parentId, selectedParent.getId());
Run Code Online (Sandbox Code Playgroud)

问题是,如何为WHERE创建谓词,如下所示:

SELECT e FROM Entity e WHERE e.parent.parent.id = :parentId
Run Code Online (Sandbox Code Playgroud)

如何创建Path父ID的父级?

criteria-api jpa-2.0

10
推荐指数
1
解决办法
7015
查看次数

适用于Play 2.0框架和Scala的IDE

我最近在玩Play 2.0.我在文档中发现它可以为Eclipse,Idea或Netbeans生成一个项目.但是,它似乎仅适用于2.0之前的版本.

如何为IntelliJ Idea配置Play 2.0项目,或者您推荐其他IDE?

playframework playframework-2.0

10
推荐指数
2
解决办法
4510
查看次数

Make Gson在使用重复键解析JSON时抛出异常

我正在用Gson解析简单的JSON对象.我希望它在重复密钥名称时抛出一些错误.例如

{
  a: 2,
  a: 3
}
Run Code Online (Sandbox Code Playgroud)

在我的例子中,Gson解析这样的JSON并将a设置为3.我希望它抛出一些异常.

我知道我可以将JSON解析为map,然后Gson会在这种情况下抛出异常,但前提是复制的键没有嵌套在map中.如果我有像这样的JSON:

{
  a: 2,
  b: {
    dup: 1,
    dup: 2
  }
}
Run Code Online (Sandbox Code Playgroud)

仍然,它被解析没有任何异常,我只有一个值为2的"dup".

我可以以某种方式设置Gson在这种情况下抛出错误吗?或者在JsonObject实例中有重复的条目,以便我自己可以检测到它(但我怀疑它,因为它会无效JsonObject)

可重复的例子

String json = "{\"a\":2, \"a\":3}";
Gson gson = new Gson();
JsonObject jsonObject = gson.fromJson(json, JsonObject.class);
System.out.println(jsonObject);
Run Code Online (Sandbox Code Playgroud)

打印出来

{"a":3}
Run Code Online (Sandbox Code Playgroud)

java parsing json gson

10
推荐指数
1
解决办法
2850
查看次数

Mongo数据库占用的磁盘空间比它应该多得多

在我的mongo数据库中,我有一个集合上限为5GB,一个10MB,很少没有上限.没有封顶的文件不包含超过20个小文件.

经过长时间(4h)压力测试,只写入5GB上限集合,我的数据库使用18GB.

这就是我的db.stats所说的(以MB为单位的值):

data-db:PRIMARY> db.stats(1024*1024)
{
    "db" : "data",
    "collections" : 9,
    "objects" : 8723395,
    "avgObjSize" : 208.8405255064112,
    "dataSize" : 1737,
    "storageSize" : 5130,
    "numExtents" : 12,
    "indexes" : 19,
    "indexSize" : 2534,
    "fileSize" : 18423,
    "nsSizeMB" : 16,
    "ok" : 1
}
Run Code Online (Sandbox Code Playgroud)

这是5GB的收集统计数据(以MB为单位的值):

data-db:PRIMARY> db.sms_message_event.stats(1024*1024)
{
    "ns" : "data.sms_message_event",
    "count" : 8723300,
    "size" : 1737,
    "avgObjSize" : 0.00019912189194456226,
    "storageSize" : 5120,
    "numExtents" : 3,
    "nindexes" : 6,
    "lastExtentSize" : 1026,
    "paddingFactor" : 1,
    "systemFlags" : 1,
    "userFlags" : 0, …
Run Code Online (Sandbox Code Playgroud)

mongodb

8
推荐指数
1
解决办法
3152
查看次数

Spock测试失败时执行一些操作

我想在Spock测试失败时执行一些操作.具体来说,截取屏幕截图.可能吗?怎么做?

testing spock

8
推荐指数
1
解决办法
4568
查看次数

更改 MySQL 中的数据库变量“character_set_client”

我发现在我的 MySQL 中我有不同的全局和数据库“character_set_client”变量。show variables节目

character_set_client | utf8
Run Code Online (Sandbox Code Playgroud)

同时show global variables显示

character_set_client | latin1
Run Code Online (Sandbox Code Playgroud)

我相信第一个是数据库设置。我怎样才能改变它?当我做

set character_set_client='latin1'
Run Code Online (Sandbox Code Playgroud)

它仅针对会话进行更改。当我断开连接并再次连接时,它会设置回“utf8”。我怎样才能改变它,使其保持在“latin1”?

mysql

8
推荐指数
1
解决办法
2万
查看次数

使用带注释的类以编程方式(不带persistence.xml文件)创建EntityManagerFactory

现在我正在创建EntityManagerFactory这样的:

    Map<String, String> properties = ImmutableMap.<String, String>builder()
        .put(DRIVER, "com.mysql.jdbc.Driver")
        .put(DIALECT, "org.hibernate.dialect.MySQL5Dialect");
        .put(USER, dbUsername)
        .put(PASS, dbPassword)
        .put(URL, dbConnectionUrl)
        //Some more properties
        .build();

    Ejb3Configuration cfg = new Ejb3Configuration();

    cfg.configure(properties);

    cfg.addAnnotatedClass(AuditEntry.class);
    cfg.addAnnotatedClass(LastWrittenEventId.class);
    //Some more annotated classes

    return cfg.createEntityManagerFactory();
Run Code Online (Sandbox Code Playgroud)

但是正如我在javadocs中看到的那样,Ejb3Configuration不推荐使用它,我不应该使用它.我应该Persistence.createEntityManagerFactory()按照JPA规范 7.3节使用.但是后来我只能传递一些属性,但是我可以以某种方式添加带注释的类吗?

hibernate entitymanager

8
推荐指数
1
解决办法
2329
查看次数

使用git发布maven的插件,如果在进程中推送了提交,则会出错

我们使用git repository和maven release插件.在第一个构建步骤中,我们将所有更改提取到本地存储库,然后在下一个中运行mvn release:prepare release:perform.release:prepare更新工作区,更新pom文件中的版本,在存储库中创建标记,运行所有测试,构建jar等.如果没问题,则将本地存储库更改推送到远程更改(更新后的poms和标记创建).

问题在于,当有人同时推动一些变化时,从maven推送失败.错误消息是:

error: failed to push some refs to 'http://<my_repository>'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again.  See the 'Note about
fast-forwards' section of 'git push --help' for details.
Run Code Online (Sandbox Code Playgroud)

有人有类似的问题吗?怎么解决?

git release maven-3 maven maven-release-plugin

7
推荐指数
1
解决办法
1550
查看次数

对于JUnit理论,像Spock的"@Unroll"这样的东西?

我使用了Spock,并且有这个精彩的@Unroll注释,这使得所有测试方法的运行看起来像是单独的测试.

JUnit有类似的东西@Theory吗?当@Theory测试方法多次运行(使用不同的参数)时,它仍然看起来像在IDE中运行一个方法.我想分别看看每次跑步.

junit unit-testing

7
推荐指数
1
解决办法
1145
查看次数

Liquibase &lt;loadData&gt;,其文件相对于脚本文件

在liquibase中,我可以包含相对于当前脚本文件具有路径的文件:

<include file="initialise/data.xml" relativeToChangelogFile="true"/>
Run Code Online (Sandbox Code Playgroud)

在变更集中,我还可以指向一个文件,该文件包含要插入的数据,例如:

<changeSet author="system-init" id="load-Company">
    <loadData tableName="Company" file="liquibase/initialise/Company.csv">
Run Code Online (Sandbox Code Playgroud)

但是,这一次,我需要使用相对于运行liquibase命令的当前目录的路径。是否有可能以某种方式使用脚本相对路径?

liquibase

7
推荐指数
1
解决办法
3284
查看次数