2013-03-14 61 views
2

我將與春天的數據會保存到Mongo的數據庫實體:與蒙戈實體使用jodatime春數據

@Document 
public class MyEntity { 

    @Id 
    private String id; 

    @QueryType(PropertyType.DATETIME) 
    private DateTime lastUpdate; 

} 

這是我的倉庫:

public interface MyEntityRepository extends 
    MongoRepository<MyEntity, String>, 
    QueryDslPredicateExecutor<MyEntity> {} 

和插件在我的pom.xml的QueryDSL代

  <plugin> 
      <groupId>com.mysema.maven</groupId> 
      <artifactId>apt-maven-plugin</artifactId> 
      <version>1.0.8</version> 
      <executions> 
       <execution> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>process</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>target/generated-sources</outputDirectory> 
         <processor>org.springframework.data.mongodb.repository.support.MongoAnnotationProcessor</processor> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

不過,這是治療的DateTime作爲一個普通的實體(我試着沒有QueryType)。我想它被視爲日期,所以我可以做比較,因爲現在我不能:

Predicate predicate = QMyEntity.myentity.lastUpdate... // where are the lessThan or greaterThan methods? 

當然,如果可能的話,我想堅持,而不是回落到至JodaTime, Java日期,或將日期存儲爲毫秒。

回答

1

org.joda.time.DateTime通常將Querydsl視爲DateTime類型,所以一些額外的標誌使得Querydsl將視爲實體類型。

該額外標誌可能是例如DateTime類型的屬性在某處註釋@Embedded@Embeddable

如果這不能解決問題,請在GitHub上爲Querydsl打開一張票。

+0

我創建了一個問題https://jira.springsource.org/browse/DATAMONGO-624 – Luciano 2013-03-15 12:47:21

+0

已修復Querydsl https: //github.com/mysema/querydsl/issues/364 – 2013-03-16 18:49:36

3

如果您正在使用最新版本的春天數據的MongoDB(1.2.0.RELEASE在寫作的時候),如果你有在classpath中庫JodaTime類型必要Converter實現應進行登記(見according ticket )。

如果必須使用舊版本,則需要手動編寫並註冊這些轉換器,如reference documentation中所述。

+0

我正在使用最新版本,但我認爲問題與QueryDsl,或至少與MongoAnnotationProcessor不將DateTime視爲日期路徑。 – Luciano 2013-03-14 19:05:13

+0

我創建了一個問題https://jira.springsource.org/browse/DATAMONGO-624 – Luciano 2013-03-15 12:46:41