MongoDB如何进行日期比较?我在MongoDB shell上尝试了一些测试:
> db.test.insert( { "dates" : [ new Date("Jul 21, 1983"), new Date("Aug 7, 1999") ] } )
"ok"
> db.test.find()
[
{ "_id" : { "$oid" : "5201e8b7cc93742c160bb9d8" }, "dates" : [ "Thu Jul 21 1983 00:00:00 GMT+0200 (CEST)", "Sat Aug 07 1999 00:00:00 GMT+0200 (CEST)" ] }
]
Run Code Online (Sandbox Code Playgroud)
现在我将尝试获取日期dates大于2000年8月30 日的所有对象.
> db.test.find( { "dates" : { $gt : new Date("Aug 30, 2000") } } )
[
]
Run Code Online (Sandbox Code Playgroud)
正如所料,该文件不符合.使用"1999年8月30日",而不是......
> db.test.find( { dates : { $gt …Run Code Online (Sandbox Code Playgroud) name在复杂的HTML表单input元素中选择属性值有一个标准或好的做法吗?例如:
<input type="text" name="post[comments][0][author][name]" />
Run Code Online (Sandbox Code Playgroud)
但是多重价值呢?我应该用吗?
<input type="file" multiple name="post[attachments]" />
Run Code Online (Sandbox Code Playgroud)
要么
<input type="file" multiple name="post[attachments][]" />
Run Code Online (Sandbox Code Playgroud)
?
PHP仅支持后者,但W3C在其示例中使用前者.因为我正在解析原始multipart/form-data实体,所以我不依赖于特定的语言; 我在寻找标准,最佳实践或建议.
我正在使用需要JPA(javax.persistence.*类)的项目来测试Java 9 .当我添加module-info.java并声明我的模块时,javax.persistece包下的所有类都变得不可用.
我搜索了很多,但我找不到要求在Java 9模块项目中使用JPA的模块.
更新 正如艾伦建议的那样,我跑了
$ jar --describe-module --file=javax.persistence-api-2.2.jar
No module descriptor found. Derived automatic module.
java.persistence@2.2 automatic
requires java.base mandated
contains javax.persistence
contains javax.persistence.criteria
contains javax.persistence.metamodel
contains javax.persistence.spi
Run Code Online (Sandbox Code Playgroud)
但仍然有这个 module-info.java
module my.module {
requires java.persistence;
}
Run Code Online (Sandbox Code Playgroud)
我找不到"module-info.java:[3,18]模块:java.persistence".
更新2 这是我的项目结构:
.
??? pom.xml
??? src
??? main
? ??? java
? ? ??? my
? ? ? ??? module
? ? ? ??? MyBean.java
? ? ??? module-info.java
? ??? resources
??? …Run Code Online (Sandbox Code Playgroud) 我在Preferences> PHP> Code Style> Fromatter> Line Wrapping上设置了我首选的数组初始化缩进,但在键入数组初始化时缩进是错误的:
$arr = array([ENTER]
····[CURSOR])
Run Code Online (Sandbox Code Playgroud)
虽然我期待:
$arr = array([ENTER]
··[CURSOR]
)
Run Code Online (Sandbox Code Playgroud)
喜欢它编辑Javascript代码.请注意,错误的缩进仅在键入时发生,而显式的CTRL + SHIFT + F正确缩进数组初始化程序.(因此,在设置缩进时,不会出现许多其他问题的重复,因为这里设置了缩进,但在键入时没有应用.)
如何在键入数组初始值设定项时获得正确的缩进?
我有一个在Grizzly实例上运行的Jersey JAX-RS应用程序:
public class Application {
public static final String BASE_URI = "http://127.0.0.1:8080/rest";
public static void main(String[] args) throws IOException {
ResourceConfig rc = new ResourceConfig().packages("my.package.rest");
HttpServer server = GrizzlyHttpServerFactory.createHttpServer(URI.create(BASE_URI), rc);
System.out.println("Server started, press any key to stop.");
System.in.read();
server.shutdownNow();
}
}
Run Code Online (Sandbox Code Playgroud)
里面my.package.rest有JAX-RS注释资源.我想补充的WebSocket注释(@ServerEndpoint,@OnOpen,@OnMessage等)在同一服务器实例使用泰鲁斯资源(在说" http://127.0.0.1:8080/websocket "),但我能找到的显示所有文件如何使用Tyrus + Grizzly容器启动独立的websocket服务器,而不是与Jersey结合使用.我正在寻找类似的东西:
server.getServerConfiguration().addHttpHandler(new SomeTyrusHttpHandler("/websocket"));
Run Code Online (Sandbox Code Playgroud)
但我找不到类似的东西SomeTyrusHttpHandler.如何在单个Grizzly服务器中结合Jersey和Tyrus?
在Eclipse Neon中,如果我编写这个Java代码:
Stream<Object> stream = Stream.builder().build();
Run Code Online (Sandbox Code Playgroud)
我没有泄漏警告,但如果我实施Stream,如
public class MyStream<T> implements Stream<T> {
// implementation
}
Run Code Online (Sandbox Code Playgroud)
我写了类似的代码
Stream<Object> stream = new MyStream<>();
Run Code Online (Sandbox Code Playgroud)
我收到Resource leak: 'stream' is never closed警告 这只发生在Eclipse中,而编译时javac不会发出任何警告.
注意我不是在寻找关于如何关闭流等的答案,而是寻找解释同一界面的这种不同行为的原因的答案.
我可以使用 Hibernate Search 使用全文查询轻松搜索我的 JPA 实体:
FullTextEntityManager fullTextEntityManager =
Search.getFullTextEntityManager(this.entityManager);
QueryBuilder queryBuilder = fullTextEntityManager.getSearchFactory()
.buildQueryBuilder().forEntity(MyBean.class).get();
org.apache.lucene.search.Query luceneQuery = queryBuilder.keyword()
.onFields("foo", "bar").matching("needle").createQuery();
javax.persistence.Query jpaQuery = fullTextEntityManager
.createFullTextQuery(luceneQuery, MyBean.class);
List<MyBean> fulltextResult = jpaQuery.getResultList();
Run Code Online (Sandbox Code Playgroud)
这很棒。但是,如何luceneQuery在现有的 JPA 查询中组合 ?例如作为在CriteriaBuilder.where()表达式中使用的谓词。我认为这可能是可能的,因为 Hibernate Search 从其索引中检索实体标识符,并最终在 JPA 查询中使用它们来获取结果,但我不知道是否还有其他方法getResultList()可以在其他中间类型中获取查询,例如一个javax.persistence.criteria.Predicate.
我有一个@ManyToOne关系的实体,我想用一个查询检索,因此使用@Fetch(FetchMode.JOIN).有时Hibernate不尊重并发布N + 1 SELECT.随着有时我的意思是,因为我不知道是什么触发它,我有案件对不同的查询,这可能发生,或者不一样的类.
这是一个带有我使用的注释的简化实体:
@Entity
public class Employee {
@ManyToOne
@Fetch(FetchMode.JOIN)
private Department department;
}
Run Code Online (Sandbox Code Playgroud)
同
CriteriaQuery<Employee> criteriaQuery = criteriaBuilder.createQuery(Employee.class);
Root<Employee> root = criteriqQuery.from(Employee.class);
TypedQuery<Employee> typedQuery = entityManager.createQuery(criteriaQuery);
List<Employee> employees = typedQuery.getResultList();
Run Code Online (Sandbox Code Playgroud)
我希望一个查询来获取两个Employee及Department,像
select ... from Employee join Department on ...
Run Code Online (Sandbox Code Playgroud)
相反,我得到所有N的Employee第一个选择,然后SELECT是所有Departments的N s(考虑没有缓存).
我发现了许多类似的问题,但他们的答案提出了解决方法,并没有解释为什么会发生这种情况.请避免建议使用延迟加载的答案:这不是我问的问题.
我在 Eclipse Neon.1 上,当我创建新的 Maven 项目时,我会得到一个默认的pom.xml内容:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>test</name>
</project>
Run Code Online (Sandbox Code Playgroud)
如何修改此默认模板?我想添加一些属性,例如
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>test</name>
<properties>
<encoding>UTF-8</encoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
</project>
Run Code Online (Sandbox Code Playgroud)
当然,我可以创建自己的原型并使用它来拥有这个 pom,但是该m2e插件是如此可配置,我希望这在没有原型的情况下也是可能的。
是否java.util.Optional只有在需要时才进行评估?
我需要将传递Optional给(我无法更改的API的)方法,该方法可能会也可能不会使用那个值Optional。由于值是由一个重运算来计算,我想以计算值,只有当(如果)它是需要的,例如呼叫get(),orElseGet(),ifPresent()等。
有点像Optional.ofLazy(Supplier<T> computeValue)。