【发布时间】:2018-01-13 12:49:38
【问题描述】:
我有两个表,它们是用户和用户详细信息。
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String userName;
private String password;
}
@Entity
public class UserDetails {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String firstName;
private String lastName;
private String address;
private Date birthday;
@ManyToOne
private User user;
}
没有显示 getter 和 setter。
我正在使用 spring boot 来创建我的应用程序。当我去保存User 时,我想同时保存这两个表。这意味着首先保存User表,然后我保存UserDetails表(要保存UserDetails表,需要User表主键)。我如何使用 Spring Boot JPA 存储库来做这件事?还有一件事,如果UserDetails 表没有保存,我们想回滚整个事务(这意味着我们必须回滚用户表)。
这是我的服务类
@Service
@Transactional
public class UserDetailsService {
@Autowired
private UserDetailsRepository userDetailsRepository;
@Autowired
private UserRepository userRepository;
void saveUserDetails(String userName, String password, String firstName, String lastName,
String address, Date birthday) {
User n = new User();
n.setUserName(userName);
n.setPassword(password);
UserDetails ud = new UserDetails();
ud.setFirstName(firstName);
ud.setlastName(lastName);
ud.setAddress(address);
ud.setBirthDate(birthday);
userRepository.save(n);
userDetailsRepository.save(ud);
}
}
【问题讨论】:
标签: java mysql spring spring-mvc spring-boot