我正在尝试使用jpa和hibernate来处理关系。我使用了一个名为users的表和一个名为emails的表。一个用户可以有多个邮箱。
当我运行我的Spring boot应用程序以及以下代码时,我在我的h2数据库中得到一个电子邮件记录。该记录的email_address为testAddress,而user_username列为空。user_username列被列为emails表上的外键。我的问题是,为什么在数据库中没有相应的用户时,emailRepository.save(email1)仍然成功?
当我运行我的Spring boot应用程序以及以下代码时,我在我的h2数据库中得到一个电子邮件记录。该记录的email_address为testAddress,而user_username列为空。user_username列被列为emails表上的外键。我的问题是,为什么在数据库中没有相应的用户时,emailRepository.save(email1)仍然成功?
@Entity
@Table(name = "emails")
public class Email {
@Id
private String emailAddress;
@ManyToOne
private User user;
...
}
@Entity
@Table(name = "users")
public class User {
@Id
private String username;
@OneToMany(mappedBy="user", cascade=CascadeType.ALL, orphanRemoval=true)
private Set<Email> emails;
...
}
public interface UserRepository extends JpaRepository<User, String> {
}
public interface EmailRepository extends JpaRepository<Email, String> {
}
@Component
public class UserRepositoryCommandLineRunner implements CommandLineRunner {
@Autowired
private EmailRepository emailRepository;
public void run(String... args) throws Exception {
Email email1 = new Email();
email1.setEmailAddress("testAddress");
emailRepository.save(email1);
}
}