关于heroku的PSQLException

问题描述 投票:0回答:1

我使用java,apache-cayenne和postgreSQL。

我的应用程序在桌面上工作正常,但是当我在Heroku上运行时出现错误:

org.postgresql.util.PSQLException: Bad value for type timestamp/date/time: 
{1}

还有警告:

INFO org.apache.cayenne.log.JdbcEventLogger - --- transaction started.
WARN org.apache.cayenne.access.types.SerializableTypeFactory - Haven't found suitable ExtendedType for class 'java.time.LocalDate'. Most likely you need to define a custom ExtendedType.
WARN org.apache.cayenne.access.types.SerializableTypeFactory - SerializableType will be used for type conversion.
INFO org.apache.cayenne.log.JdbcEventLogger - --- transaction started.
INFO org.apache.cayenne.log.JdbcEventLogger - SELECT t0.DATE, t0.ROOM, t0.TIME, t0.TYPE, t0.PROFESSOR_ID, t0.SUBJECT_ID, t0.LESSON_ID FROM Lesson t0 JOIN Subject t1 ON (t0.SUBJECT_ID = t1.SUBJECT_ID) WHERE (t0.DATE = ?) AND (t1.USER_ID = ?) [bind: 1->DATE:2017-12-08, 2->USER_ID:81627965]

这是我的xml:

<db-entity name="Lesson">
    <db-attribute name="DATE" type="DATE"/>
    <db-attribute name="LESSON_ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
    <db-attribute name="PROFESSOR_ID" type="INTEGER"/>
    <db-attribute name="ROOM" type="VARCHAR" length="50"/>
    <db-attribute name="SUBJECT_ID" type="INTEGER"/>
    <db-attribute name="TIME" type="TIME"/>
    <db-attribute name="TYPE" type="INTEGER"/>
</db-entity>
<obj-entity name="Lesson" className="com.intetics.organizerbot.entities.Lesson" dbEntityName="Lesson">
    <obj-attribute name="date" type="java.time.LocalDate" db-attribute-path="DATE"/>
    <obj-attribute name="room" type="java.lang.String" db-attribute-path="ROOM"/>
    <obj-attribute name="time" type="java.time.LocalTime" db-attribute-path="TIME"/>
    <obj-attribute name="type" type="int" db-attribute-path="TYPE"/>
</obj-entity>

我从桌面和Heroku使用相同的Heroku Postgres数据库。

似乎与LocalDate类有关的一些问题。但我不知道为什么我的电脑上的一切正常,而heroku也有问题。

我也尝试部署jar工作正常,它仍然无法正常工作。

您是否知道为什么会发生这种情况?我该如何解决?

模拟问题wath问生产服务器Bad value for type timestamp on production server,但我似乎不能在Heroku上应用它的答案。

java postgresql heroku apache-cayenne
1个回答
0
投票

要使用Cayenne的Java 8 java.time.*类,您需要确保将cayenne-java8模块包含在您的项目中,有关详细信息,请参阅此docs。没有它,Cayenne就不知道如何处理这些课程。

© www.soinside.com 2019 - 2024. All rights reserved.