当前位置: 首页 > 知识库问答 >
问题:

SqlSyntaxerRoreXception:ORA-00932:不一致的数据类型:预期的日期得到二进制

毕黎昕
2023-03-14

我将非常感谢对这个例外的帮助。

我对这个错误做了一些研究,但找不到解决方法。我将JPA与hibernate一起使用,并在执行查询时得到这个错误。

显然,关于java LocalDate和oracle Date有一些我不理解的地方。:(

这就是目标:

@Entity
@Table(name = "MY_TABLE")
public class MyObject implements Serializable {

    private static final long serialVersionUID = 1731972128723930612L;

    @Id
    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "OTHER_ID", nullable = false)
    private OtherObject otherObject;

    @Column(name = "MY_DATE", columnDefinition="DATE", nullable = false)
   // @Convert(converter = LocalDateSQLDateConverter.class)
   // @Convert(converter = LocalDateConverter.class)
    private LocalDate date;
public class MyDao extends BaseDao {

    public void save(MyObject object) {
        entityManager.persist(object);
    }

    public MyObject findByDate(LocalDate date) {
        TypedQuery<MyObject> query = entityManager.createQuery("SELECT w from MyObject w"
                + " where w.date = :date", MyOBject.class)
                .setParameter("date", date);
        return query.getResultList().stream().findFirst().orElse(null);
    }

java.sql.SqlSyntaxerRoreXception:ORA-00932:不一致的数据类型:预期的日期已获取二进制

非常感谢提前给你的提示!

共有1个答案

韩自怡
2023-03-14

虽然这似乎是反直觉的,但您应该传递一个字符串表示,如下所示:

SELECT * FROM xxx where date_of_birth = '1990-08-21';

其中date_of_bornedate类型(Mysql,而不是Oracle,但不重要),并映射到Spring/Hibernate中的localdate

 类似资料: