我使用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,它工作得很好,但仍然不能工作。
你知道为什么会发生这种情况吗?我该如何修复它?
类似的问题被问及生产服务器Bad value for type timestamp on production server,但我似乎不能将它的答案应用于Heroku。
发布于 2017-12-20 02:38:14
为了使用来自Cayenne的Java8 java.time.*类,您需要确保将cayenne-java8模块包含到您的项目中,有关详细信息,请参阅此docs。没有它,Cayenne就不知道如何处理这些类。
https://stackoverflow.com/questions/47722374
复制相似问题