I am working on Springboot data rest with OpenJPA application, but getting the below exception:
RepositoryRestExceptionHandler : Cannot cast org.apache.openjpa.util.LongId to java.lang.Long
java.lang.ClassCastException: Cannot cast org.apache.openjpa.util.LongId to java.lang.Long
Below is the entity class: Station.java
@Entity
@Table(name = "STATION")
public class Station extends GenericEntityModel<Long> {
@Id
@SequenceGenerator(name="STATION_SEQ_GEN", sequenceName="STATION_SEQ_GEN", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="STATION_SEQ_GEN")
@Column(name = "STATION_ID")
private Long id;
@Column(name = "STATION_NAME")
private String name;
@Column(name = "STATION_DESC")
private String description;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "station", fetch = FetchType.EAGER)
public List<Track> tracks;
// setters getters
Track.java:
@Entity
@Table(name = "TRACK")
public class Track extends GenericEntityModel<Long> {
@Id
@SequenceGenerator(name = "TRACK_SEQ_GEN", sequenceName = "TRACK_SEQ_GEN", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "TRACK_SEQ_GEN")
@Column(name = "TRACK_ID")
private Long id;
@Column(name = "TRACK_NAME")
private String name;
@Column(name = "TRACK_DESC")
private String description;
@Enumerated(EnumType.STRING)
@Column(name = "TRACK_TYPE")
private TrackType type;
@Column(name = "TRACK_LENGTH")
private int trackLength;
@Enumerated(EnumType.STRING)
@Column(name = "DIRECTION")
private Direction direction;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "STATION_ID", nullable = false)
public Station station;
// setters and getters
GenericEntityModel.java
@MappedSuperclass
public abstract class GenericEntityModel<ID extends Serializable> implements Serializable {
private static final long serialVersionUID = 1L;
public static final String DEFAULT_SYSTEM_USER = "SYSTEM";
@Column(name = "CREATED_DATE", insertable = true, updatable = false)
@Temporal(TemporalType.TIMESTAMP)
protected Date createdDate = new Date();
@Column(name = "CREATED_BY")
protected String createdBy = DEFAULT_SYSTEM_USER;
@Column(name = "MODIFIED_DATE", insertable = true, updatable = true)
@Temporal(TemporalType.TIMESTAMP)
protected Date modifiedDate = new Date();
@Column(name = "MODIFIED_BY")
protected String modifiedBy = DEFAULT_SYSTEM_USER;
I am using spring data rest. Here is the repository class:
@RepositoryRestResource(collectionResourceRel = "station", path = "station")
public interface StationRepository extends PagingAndSortingRepository<Station,
Long> {
}
// For Track
@RepositoryRestResource(collectionResourceRel = "track", path = "track")
public interface TrackRepository extends PagingAndSortingRepository<Track, Long> {
}
Q1. When i am trying to update a station using springdata rest , i am getting the above mentioned exception.