在Java 8中,有一种新方法String.chars()返回表示字符代码的ints(IntStream)流.我想很多人会期待char这里有一股流.以这种方式设计API的动机是什么?
包括我在内的一些人一直在努力将来自不同模块(jar)的实体合并到一个持久性单元中(特别是使用JavaSE,例如JPA 2.0:自动将来自不同jar*的实体类添加到PersistenceUnit*).根据答案,没有简单的直接方法来做到这一点.解决方案之一是在单个持久性单元文件中列出所有jar中的所有类,但这并不是很优雅.我可能偶然发现了另一种方式.通常,我的所有实体类都使用注释进行映射.至于解决方案:persistence.xml可以包含多个XML映射文件,例如:
main.jar文件META-INF/persistence.xml中!
<persistence-unit name="PU" transaction-type="RESOURCE_LOCAL">
<mapping-file>META-INF/order-mappings.xml</mapping-file>
<mapping-file>META-INF/customer-mappings.xml</mapping-file>
</persistence-unit>
Run Code Online (Sandbox Code Playgroud)
映射文件可以放在不同的jar中.我注意到它们可能包含没有任何属性的<entity>元素,例如:
order.jar!META-INF /订单mappings.xml
<entity-mappings>
<entity class="com.company.Order"></entity>
</entity-mappings>
Run Code Online (Sandbox Code Playgroud)
即使映射文件没有映射任何属性,但无论如何都要考虑Java类中的注释,一切似乎都可以正常工作!这意味着只需通过包含来自特定JAR的XML映射文件,就可以轻松地将来自多个jar的实体包含到单个持久性单元中.
我的问题是:这是一个允许的JPA映射文件用法还是只是我的持久性提供程序(Hibernate)的副作用?
我经常在运行时看到以下消息nodetool repair:
[2015-02-10 16:19:40,042] Lost notification. You should check server log for repair status of keyspace xxx
Run Code Online (Sandbox Code Playgroud)
它究竟意味着什么(以及如果它危险的话如何预防它)?
我在四节点集群中使用Cassandra 2.1.2.
我在Cassandra中有两个关于查询结果的问题.
当我在Cassandra(即.select * from table)中对表进行"完整"选择时,是否可以保证结果将按分区令牌的递增顺序返回?例如,有下表:
create table users(id int, name text, primary key(id));
Run Code Online (Sandbox Code Playgroud)
是否可以保证以下查询将返回结果,并在令牌列中增加值?
select token(id), id from users;
Run Code Online (Sandbox Code Playgroud)
如果是这样,如果数据分发到群集中的多个节点,是否也能保证?
如果上述问题的答案为"是",如果我们使用二级索引,它仍然有效吗?例如,如果我们有以下索引:
create index on users(name);
Run Code Online (Sandbox Code Playgroud)
我们使用索引查询表:
select token(id), id from users where name = 'xyz';
Run Code Online (Sandbox Code Playgroud)
关于结果的顺序是否有任何保证?
上述问题的动机是,如果在实现分页和/或恢复损坏的较长"数据导出"时令牌是正确的.
编辑:网上有多个资源表明订单与令牌订单匹配(例如,在分区器结果或此Datastax页面的描述中):
如果没有WHERE子句中指定的分区键,则结果集的实际顺序将依赖于userid的散列值.
但是,官方Cassandra文档中没有指定结果的顺序,例如.的SELECT语句.
如果给定的顶点没有特定的属性,g.V.hasNot('non-existent-property', 'value')查询的结果应该是什么
?顶点是否应该由这样的查询发出?
使用 TinkerPop 和 Titan 的内存图时,我得到了矛盾的结果:
gremlin> g = TinkerGraphFactory.createTinkerGraph()
==>tinkergraph[vertices:6 edges:6]
gremlin> g.V.hasNot("abcd", true)
==>v[1]
==>v[2]
==>v[3]
==>v[4]
==>v[5]
==>v[6]
Run Code Online (Sandbox Code Playgroud)
以上对我来说很好 - 顶点没有指定的属性(设置为true),所以所有都返回。但是如果我在 Titan 的内存图中做类似的事情:
gremlin> g2 = TitanFactory.open(com.thinkaurelius.titan.graphdb.configuration.GraphDatabaseConfiguration.buildConfiguration().set(com.thinkaurelius.titan.graphdb.configuration.GraphDatabaseConfiguration.STORAGE_BACKEND, "inmemory"))
==>titangraph[inmemory:[127.0.0.1]]
gremlin> g2.addVertex(null)
==>v[256]
gremlin> g2.V.hasNot("abcd", true)
Run Code Online (Sandbox Code Playgroud)
它不返回任何结果。哪一个是对的?