2013-04-28 117 views
0

我試圖讓Jadira,Hibernate 4和JSR-310一起工作,我得到了一個真是奇怪的例外,我無法通過掃描網絡找到任何信息。Jadira,Hibernate和JSR 310 - java.lang.TypeNotPresentException:類型org.threeten.bp.Duration不存在

@Entity 
@Table(name = "BUSINESS_DATES") 
@BizDateValidatorI 
public class BizDate { 

    @Id 
    @Column(name="BIZ_DATE_PK") 
    private int bizDatePk = -1; 

    @Column(name="BIZ_DATE") 
    @Type(type="org.jadira.usertype.dateandtime.joda.jsr310.PersistentLocalDate") 
    @NotNull 
    private LocalDate bizDate; 

    @Column(name="BIZ_DATE_TYPE") 
    @Enumerated(EnumType.STRING) 
    @NotNull 
    private BizDateTypeEnum bizDateTypeEnum; 

    @Column(name="DATE_DESC") 
    @NotBlank 
    @Length(min = 5, max = 100) 
    private String dateDesc; 

    @Column(name="START_TIME") 
    @Type(type="org.jadira.usertype.dateandtime.joda.jsr310.PersistentLocalDateTime") 
    private LocalDateTime startTime; 

    @Column(name="END_TIME") 
    @Type(type="org.jadira.usertype.dateandtime.joda.jsr310.PersistentLocalDateTime") 
    private LocalDateTime endTime; 

<<Omitted getters/setters>> 

應用程序上下文:

<description>Application Context for Core Utilities</description> 

<tx:annotation-driven transaction-manager="transactionManager" /> 

<context:component-scan base-package="org.jc.utils" /> 

<jpa:repositories base-package="org.jc.utils" /> 

<jdbc:embedded-database id="dataSource" type="H2"> 
    <jdbc:script location="classpath:/org/jc/utils/basetests/basetests.sql" /> 
</jdbc:embedded-database> 

沒有人有任何

(與Jadira /喬達)

<dependency> 
    <groupId>joda-time</groupId> 
    <artifactId>joda-time</artifactId> 
    <version>2.1</version> 
</dependency> 
<dependency> 
    <groupId>org.jadira.usertype</groupId> 
    <artifactId>usertype.core</artifactId> 
    <version>3.1.0.CR2</version> 
</dependency> 
<dependency> 
    <groupId>org.jadira.usertype</groupId> 
    <artifactId>usertype.extended</artifactId> 
    <version>3.1.0.CR2</version> 
</dependency> 
<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-testing</artifactId> 
    <version>${hibernate.version}</version> 
</dependency> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-context-support</artifactId> 
    <version>${spring.framework.version}</version> 
</dependency> 
<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-entitymanager</artifactId> 
    <version>${hibernate.version}</version> 
</dependency> 

這裏是我的測試代碼POM元素想法爲什麼我保持ge tting java.lang.TypeNotPresentException:類型org.threeten.bp.Duration不存在異常? Threeten並沒有被Maven中的usertype聲明所吸引,並且沒有太多關於它在usertype中的作用。

謝謝!

約翰

+0

我想這個問題的標題應改爲JodaTime而不是JSR310。 – yunspace 2015-03-23 06:46:48

回答

1

在刪除POM中的以下依賴項後嘗試。它爲我工作。

<dependency> 
     <groupId>org.jadira.usertype</groupId> 
     <artifactId>usertype.extended</artifactId> 
     <version>3.1.0.CR2</version> 
</dependency> 
+0

非常感謝您的回覆!我刪除了擴展庫,它刪除了3ten異常,但用無法找到org.jadira.usertype.dateandtime.joda.jsr310.PersistentLocalDateTime替換它。去除包裝中的「jsr310」部分消除了這個問題。一個記錄不完善的圖書館 - 我希望這是值得的! – jcurtin 2013-05-03 00:22:21

+0

@jcurtin這是否意味着'usertype.extended'包不需要持久化JPA 2中的JSR 310與休眠? – TheKojuEffect 2014-05-21 02:46:27

+0

我認爲Joda時間和JSR310是兩個不同的實現,它們滿足提供改進的日期和時間功能的相同目標。由於我使用喬達時間,我不需要JSR310。長話短說,我會說,是的 - 如果您使用的是JSR310,則需要擴展包。 – 2014-05-22 14:30:44

0

這是解決這個問題的方法。這些都是最小pom.xml依賴關係管理環境(特別是wildfly 8)

pom.xml依賴關係:

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-annotations</artifactId> 
    <version>3.5.6-Final</version> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>org.jadira.usertype</groupId> 
    <artifactId>usertype.core</artifactId> 
    <version>3.2.0.GA</version> 
</dependency> 
<dependency> 
    <groupId>joda-time</groupId> 
    <artifactId>joda-time</artifactId> 
    <version>2.1</version> 
</dependency> 

在此之後,每個實體的時間屬性以下列方式映射:

@Type(type="org.jadira.usertype.dateandtime.joda.PersistentLocalDate") 
private LocalDate birthday; 
相關問題