我使用弹性版本2.2.0的Spring Data Elasticsearch 2.0.1.
我的DAO类似于:
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
@Document(indexName = "myIndex")
public class MyDao {
@Id
private String id;
public String getId() { return id; }
public void setId(String id) { this.id = id; }
<other fields, setters, getters omitted>
}
Run Code Online (Sandbox Code Playgroud)
使用存储库将对象保存到ES,_id可以正确填充元数据字段.id字段的getter和setter方法正确返回_id元数据字段的值.但是字段中的id _source字段为空.
2个问题:1)为什么id字段为空?2)id字段为空是否重要?
在尝试转换这样的东西时,我为变换后的对象获取了一个空值:
{
"employees": [
{ "f_name" : "tom", "l_name" : "smith" },
{ "f_name" : "don", "l_name" : "jones" }
]
}
Run Code Online (Sandbox Code Playgroud)
对此:
{
"employees": [
{ "firstName" : "tom", "lastName" : "smith" },
{ "firstName" : "don", "lastName" : "jones" }
]
}
Run Code Online (Sandbox Code Playgroud)
这是我使用的规范:
[
{
"operation" : "shift",
"spec" : {
"employees" : {
"f_name" : "firstName"
"l_name" : "lastName"
}
}
]
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的代码:
List<Object> chainrSpecJSON = JsonUtils.classpathToList("path/spec.json");
Chainr chainr = Chainr.fromSpec(chainrSpecJSON);
Object inputJSON = JsonUtils.classpathToObject("path/input.json");
Object transformed …Run Code Online (Sandbox Code Playgroud) 似乎无法找到这个问题的简单是或否答案。
当您有一个带有一个或多个别名的索引时,您是否可以删除该索引而不会产生任何负面影响?删除索引也会删除别名吗?在删除索引之前是否应该先删除所有别名?
什么被认为是最佳实践?
我正在查看几个使用 msdata:Ordinal 作为序列中元素的 XSD 文件。我似乎无法在任何地方找到它的用途和/或在什么情况下需要它。有人可以帮我解释一下和举例吗?
我有一个使用Hibernate 4.1和Spring 3.1.1的应用程序.我使用Spring的HibernateJpaVendorAdapter并将generateDdl设置为true来创建实体.
我刚刚创建了一个View并创建了一个实体来映射到该视图.视图的实体使用@ Entity,@ Table(名称="ViewName")和@Immutable进行注释.当我部署Web应用程序时,它会自动为所有实体创建表,这些表为应该映射到我的View的实体创建一个表.我必须进入并手动删除该表,然后创建视图.虽然我可以继续这样做,但我想知道是否有办法指定不为特定的"视图"实体创建表.
使用Java 8时间我只想弄清楚时间范围内表示的天数.考虑以下:
LocalDate start = LocalDate.of(2016, Month.MARCH, 28);
LocalDate end = LocalDate.of(2016, Month.MARCH, 31);
Period period = Period.between(start, end);
Run Code Online (Sandbox Code Playgroud)
期间的天数为3,表示两个日期之间的天数,包括开始日期和结束日期.我想要的是两个日期所代表的天数,实际上是4天(3月28日,3月29日,3月30日,3月31日).
我知道我可以加上从Period.between()返回的天数加1,但我想我很惊讶我找不到另一个电话来准确地返回我想要的东西.我错过了什么或者只添加1个解决方案吗?
在搜索和搜索之后,我还没有找到解决方案.
使用Spring 3.1
我有一个表单,我希望用户能够添加多个联系人(poc).在我的JSP中,我有一个用于添加poc的提交按钮.它转到Spring Controller,从域对象获取当前的poc列表(首先是空的),将poc添加到列表中,然后在返回到同一视图之前将域对象放回模型中.然后,用户将最终提交整个页面,该页面将转到控制器并将整个对象保存为持久性.
我已经尝试了各种尝试,并且得出了不同的结果,因为只能添加一个新的poc覆盖现有的poc,而不能在表单上显示输入的poc.我会把我目前的代码.
JSP:
<form:form method="post" commandName="request">
...
<h2>POC:</h2>
<input type="text" name="newPoc"/>
<input type="submit" name="addPoc" value="Add POC"/>
<table>
...
<c:forEach items="${request.pointOfContacts}" var="poc" varStatus="vs">
<tr>
<td><form:label path="pointOfContacts[${vs.index}].name/></td>
.....
</c:forEach>
......
</table>
</form:form>
Run Code Online (Sandbox Code Playgroud)
弹簧控制器:
@RequestMapping(value="/request", method=RequestMethod.POST, param="addPoc")
public Sring addPoc(@RequestParam String newPoc, MyRequest req, Model model) {
PointOfContact poc = new PointOfContact();
poc.setName(newPoc);
List<PointOfContact> pocs = req.getPointOfContacts();
pocs.add(poc);
req.setPointOfContacts(pocs);
model.addAttribute("request", req);
return "requestForm";
}
Run Code Online (Sandbox Code Playgroud)
域对象
@Entity
public class MyRequest {
...
@OneToMany(Cascade=CascadeType.ALL)
private List<PointOfContact> pointOfContacts = new ArrayList<PointOfContact>();
..... …Run Code Online (Sandbox Code Playgroud) 我很困惑为什么 INFO 语句会进入控制台。这是一般设置:
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out"/>
<param name="Threshold" value="DEBUG"/>
<layout .../>
</appender>
<appender name="REST_LOG" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="/logs/rest.log" />
<param name="Threshold" value="INFO" />
....
</appender>
<category name="xyz.web">
<priority value="WARN" />
<appender-ref ref="CONSOLE" />
</category>
<category name="xyz.web.rest">
<priority value="INFO" />
<appender-ref ref="REST_LOG" />
</category>
Run Code Online (Sandbox Code Playgroud)
所以我希望 INFO 和上面的语句只对 REST_LOG 和 WARN 语句执行,并且上面的语句转到 REST_LOG 和 CONSOLE。我看到的是 REST_LOG 中来自 xyz.web.rest 的 INFO 语句,正如预期的那样,但也在 CONSOLE 中看到来自 xyz.web.rest 的 INFO 语句,这是我没有预料到的。
有人可以解释一下发生了什么事吗?