1
私は2つの問題は、私のプロジェクトのフィールドをentityes持っている: まず:Hibernateマッピング省の問題
public class User implements UserDetails {
private static final long serialVersionUID = -8442780593066407492L;
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(name = "user_role",
joinColumns = {@JoinColumn(name = "user_id")},
inverseJoinColumns = {@JoinColumn(name = "role_id")})
private Set<UserRole> userRoles = new HashSet<UserRole>();
@OneToMany(mappedBy = "user", cascade = CascadeType.REMOVE)
private Set<CommentReserv> comments = new HashSet<CommentReserv>();
public Collection<? extends GrantedAuthority> getAuthorities() {
List<SimpleGrantedAuthority> result = new
ArrayList<SimpleGrantedAuthority>();
for (UserRole userRole: userRoles) {
result.add(new
SimpleGrantedAuthority(userRole.getListRole().name()));
}
return result;
}
...
}
第二:
public class CommentReserv implements Serializable {
private static final long serialVersionUID = 1579363480188238317L;
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@ManyToOne
@JoinColumn(name = "reservation_id")
private Reservation reservation;
@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "user_id")
private User user;
...
}
サード:
public class Reservation implements Serializable{
private static final long serialVersionUID = -9007238193656173229L;
@Id
@Column(name = "id")
private String id = generateId();
...
@OneToMany(mappedBy = "reservation", cascade = CascadeType.REMOVE)
private Set<CommentReserv> comments = new HashSet<CommentReserv>();
...
その後、私は予約を取得DBからユーザー...
Reservation reservation = this.reservationRepository.getReservationById(params.get("reservationId").toString());
User currentUser = this.userRepository.getUser(principal.getName());
(確認しました。ユーザーが正しく読み込まれています。) 新しいCommentReservインスタンスに設定します。
commentReserv.setReservation(reservation);
commentReserv.setComment(params.get("comment").toString());
commentReserv.setUser(currentUser);
新しいCommentReservを保存しようとすると、私は自分のDBにユーザーコピーを取得します。 CommentReservからcascadetypeを削除しようとしましたが、TransientObjectExceptionが生成されました。 私のコードで何が問題になっていますか?睡眠のない2番目の夜...
予約コードを共有できますか? –
追加予約コード –
あなたは完全な例外を共有することができます –