小编rwe*_*ser的帖子

Hibernate Envers - REVINFO表不存在

我正在使用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

hibernate hibernate-envers

6
推荐指数
1
解决办法
8514
查看次数

ElasticSearch-跨多个字段的部分匹配

我是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)

我想设计一个分析器并搜索查询,以便搜索:

  • “ ben”匹配所有三个(很简单)
  • “本·卡尔”匹配#1和#2
  • “卡尔·本”也匹配#1和#2
  • “ benj carl”仅匹配#1(考虑到ngram标记器似乎起作用的方式,它不像我之前想象的那样自然地跟随先前的匹配)
  • “ carlt ben”仅匹配#2(相同)
  • “ benj carlt”将没有匹配项
  • “ 111-222-3334”仅匹配#2

我觉得我已经接近了,使用以下分析器:

{
    "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)

n-gram elasticsearch

5
推荐指数
0
解决办法
134
查看次数

Calendar.get(Calendar.DAY_OF_MONTH) 返回错误的一天

当我运行以下代码时:

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,如果有问题,我目前使用 …

java calendar java-7

4
推荐指数
1
解决办法
5597
查看次数