我正在使用Hibernate 4.3.6,我尝试通过将@Audited注释添加到我的@Entity类之一来使用Envers功能.(envers jar - hibernate-envers-4.3.6.Final.jar - 在我的CLASSPATH上.)
当我运行我的代码时,在没有@Audited注释的情况下保持良好的持久性,我得到一个org.hibernate.exception.SQLGrammarException:
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'dbname.REVINFO' doesn't exist
Run Code Online (Sandbox Code Playgroud)
我没有看到任何关于必须创建REVINFO表的文档,因此我假设它会自动创建,但似乎没有发生.我错过了什么吗?
(如果我手动创建它,按照此处描述的模式 - http://thinkinginsoftware.blogspot.co.il/2011/03/auditing-entities-with-hibernate-jpa.html - 那么我得到一个例外*_AUD不存在.我想我对所有*_AUD表都有同样的问题.)
谢谢,Reuven
我是ElasticSearch的新手,致力于跨多个字段进行部分匹配工作。例如,假设我为以下三个文档建立了索引:
{
"document-id": "Patient1",
"document-type": "patients",
"firstName": "Benjamin",
"lastName": "Carlton",
"medicalRecordNumber": "111-222-3333"
}
{
"document-id": "Patient2",
"document-type": "patients",
"firstName": "Carly",
"lastName": "Benson",
"medicalRecordNumber": "111-222-3334"
}
{
"document-id": "Patient3",
"document-type": "patients",
"firstName": "Jason",
"lastName": "Benson",
"medicalRecordNumber": "111-222-3335"
}
Run Code Online (Sandbox Code Playgroud)
我想设计一个分析器并搜索查询,以便搜索:
我觉得我已经接近了,使用以下分析器:
{
"settings": {
"analysis": {
"tokenizer": {
"partialMatchTokenizer": {
"type": "edge_ngram",
"min_gram": 2,
"max_gram": 10
}
},
"analyzer": {
"partialMatchAnalyzer": {
"type": "custom",
"tokenizer": "partialMatchTokenizer",
"char_filter": …Run Code Online (Sandbox Code Playgroud) 当我运行以下代码时:
int year = 2017;
int month = 7;
int dayOfMonth = 10;
Calendar dateOfBirth = new GregorianCalendar(year, month, dayOfMonth);
dateOfBirth.getTime(); // See http://bugs.java.com/bugdatabase/view_bug.do?bug_id=4827490
dateOfBirth.setTimeZone(TimeZone.getTimeZone("UTC"));
System.out.println("Original Day Of Month:\t\t" + dayOfMonth);
System.out.println("Calendar:\t\t\t" + dateOfBirth);
System.out.println("Calendar substring:\t\t" + dateOfBirth.toString().substring(dateOfBirth.toString().indexOf("DAY_OF_MONTH"), dateOfBirth.toString().indexOf("DAY_OF_MONTH") + 15));
System.out.println("Formatted date:\t\t\t" + new SimpleDateFormat("dd").format(dateOfBirth.getTime()));
System.out.println("get(Calendar.DAY_OF_MONTH):\t" + dateOfBirth.get(Calendar.DAY_OF_MONTH));
Run Code Online (Sandbox Code Playgroud)
我得到这个输出:
Original Day Of Month: 10
Calendar: java.util.GregorianCalendar[time=1502312400000,areFieldsSet=false,areAllFieldsSet=false,lenient=true,zone=sun.util.calendar.ZoneInfo[id="UTC",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=?,YEAR=2017,MONTH=7,WEEK_OF_YEAR=?,WEEK_OF_MONTH=?,DAY_OF_MONTH=10,DAY_OF_YEAR=?,DAY_OF_WEEK=?,DAY_OF_WEEK_IN_MONTH=?,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=?,ZONE_OFFSET=?,DST_OFFSET=?]
Calendar substring: DAY_OF_MONTH=10
Formatted date: 10
get(Calendar.DAY_OF_MONTH): 9
Run Code Online (Sandbox Code Playgroud)
可以看到,返回的值dateOfBirth.get(Calendar.DAY_OF_MONTH)是不正确的。
我使用 UTC 是因为它是出生日期,我不希望它依赖于特定的时区。为了正确执行此操作,我需要调用dateOfBirth.getTime()- 参见http://bugs.java.com/bugdatabase/view_bug.do?bug_id=4827490。如果我拨打那个电话,这可以正常工作,但随后我会遇到其他错误。
知道我能做些什么来准确地获得一个月中的正确日期吗?
我使用的是 Java v1.7.0_79,如果有问题,我目前使用 …