モデル Postgresの+休止+ NativeQuery:PostgresのTIMSTAMP
package domain;
@Entity @lombok.Getter @lombok.Setter
public class Event implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(generator = "uuid2")
@GenericGenerator(name = "uuid2", strategy = "uuid2")
@Type(type="pg-uuid")
private UUID uuid;
@Column(columnDefinition = "TIMESTAMP", updatable = false)
@CreatedDate
@Temporal(TemporalType.TIMESTAMP)
@Type(type= "PersistentDateTime") // typedef in package-info.java
private DateTime createdAt; // Joda's DateTime
}
リポジトリ
package repository;
@Repository
public interface EventRepository extends JpaRepository<Event, UUID> {
// Has to be native query
@Query(value = "SELECT * FROM events WHERE created_at >= :created_at ", nativeQuery = true)
List<Event> findCreatedSince(@Param(value = "created_at") DateTime createdAt);
}
にジョダDateTimeの私はそれがメッセージ"cannot cast type bytea to timestamp without time zone"
とPSQLException
スローfindCreatedSince(someDateTime)
を呼び出します。 (実際のところ、JPQLの通常の場合、不平はありません。実際、標準のJPAリポジトリメソッドを使用してデータを完全に格納して取り出すことができます)。一時的な解決のための
[main] TRACE BasicBinder – binding parameter [1] as [VARBINARY] - [1970-01-01T01:00:00.000+01:00]
を私はjava.util.Date
にcreatedAt
の種類を変更し、私は私がどのように使用できるか知りたい:メソッドを呼び出すときに、私は、次のログを(VARBINARY
に注意してください)得たレコードの JodaのDateTime
タイプです。前もって感謝します。日付のリポジトリ、変更日時で
たぶん、あなたのJPAプロバイダは、箱から出しJodatime種類をサポートしていませんか?私が使用しているJPAプロバイダ(DataNucleus)はそうですが、JodatimeタイプはJPA仕様の対象外です。 –
私がこの記事で触れたように、通常のJPQL呼び出しはうまく機能するので、それは問題だとは思わない。 – Rad
何かが "bytea"として列をマッピングしている場合、それは動作しません。 Hibernateはスキーマを生成しましたか? Jodatimeフィールドを「bytea」としていますか?すなわち直列化される。 –