私のデータベース内の3つのテーブルに3つの@Entity
クラスがマップされています。エンティティクラスは私のコードでトランザクションロールバックをサポートするmysqlの永続javaクラス
@Entity
@Table(name = "gbi_user")
public class UserModel {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "u_id")
private Long id;
@Column(name = "u_fname")
private String firstName;
@Column(name = "u_lname")
private String lastName;
//getters and setters
}
@Entity
@Table(name = "gbi_reachable_address")
public class AddressModel {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ra_id")
private Long id;
@Column(name = "ra_city")
private String city;
@Column(name = "ra_zip")
private Integer zip;
// getters and setters
}
@Entity
@Table(name = "gbi_user_to_address")
public class UserToAddress {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "uta_id")
private Long id;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "uta_frn_user_id", referencedColumnName = "u_id")
private UserModel user;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "uta_frn_add_id", referencedColumnName = "ra_id")
private AddressModel address;
//getters and setters
}
あり、私が最初にJPAのsave()
を使用してデータベースにUserModel
クラスを保存しています。次に、データベースにクラスAddressModel
を保存しています。最後に、UserToAddress
クラスをデータベースに保存します。それは正常に動作しています。ただし、UserToAddress
クラスを保存中に例外が発生した場合は、UserModel
とAddressModel
がデータベースに保存されます。それを避ける方法は?