簡體   English   中英

類型不匹配:預期數字、日期或字符串 hibernate LocalDate

[英]Type mismatch: number, date or string expected hibernate LocalDate

任務:


字段dates數據庫中具有類型date

create table items
(
    id   serial primary key,
    dates date
);

實體://字段“日期”,輸入“LocalDate”:

@Entity
@Table(name = "items")
public class Item {
    private LocalDate date;

    @Column(name = "dates")
    public LocalDate getDate() {
        return date;
    }
}

class 用戶存儲:

class UserStore {
    private final SessionFactory factory = new Configuration()
            .configure().buildSessionFactory();

    public List<?> findByDate() {
        Session session = factory.openSession();
        session.beginTransaction();
        final String sql = "from Item i where i.date between ?1 and ?2";
        Query query = session.createQuery(sql, Item.class);
        query.setParameter(1, LocalDate.now());
        query.setParameter(2, LocalDate.now());
        List<?> result = query.getResultList();
        session.getTransaction().commit();
        session.close();
        return result;
    }
}

pom.xml

        <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.4.12.Final</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-java8 -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-java8</artifactId>
            <version>5.4.17.Final</version>
        </dependency>

添加:

 <property name="dialect">org.hibernate.dialect.PostgreSQL9Dialect</property>

在 sql 請求中:“來自 Item i where i.date between?1 and?2”,字段i.date以紅色突出顯示,表示jpa 錯誤並需要使用 Date 類型:

看錯

如果我使用類型Date而不是LocalDate錯誤轉義。 但我需要LocalDate類型。


如何解決?

附言。 代碼編譯正確。代碼實現並不重要。 問題一:如何在不關閉檢查的情況下排除錯誤。

pom.xml中刪除hibernate-java8工件。 它已被棄用 hibernate-core就足夠了。 我已經測試了您的查詢,它對我來說很好用LocalDate

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM