在Spring中,可以通过以下步骤来在创建父实体时添加子实体:
示例代码如下:
父实体类:
@Entity
public class ParentEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
// 其他属性
@OneToMany(mappedBy = "parentEntity", cascade = CascadeType.ALL)
private List<ChildEntity> childEntities;
// getter和setter方法
}
子实体类:
@Entity
public class ChildEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
// 其他属性
@ManyToOne
@JoinColumn(name = "parent_entity_id")
private ParentEntity parentEntity;
// getter和setter方法
}
父实体的Repository接口:
@Repository
public interface ParentEntityRepository extends JpaRepository<ParentEntity, Long> {
// 其他方法
void save(ParentEntity parentEntity);
}
子实体的Repository接口:
@Repository
public interface ChildEntityRepository extends JpaRepository<ChildEntity, Long> {
// 其他方法
void save(ChildEntity childEntity);
}
Service层:
@Service
public class EntityService {
@Autowired
private ParentEntityRepository parentEntityRepository;
@Autowired
private ChildEntityRepository childEntityRepository;
@Transactional
public void saveParentWithChildEntities(ParentEntity parentEntity) {
List<ChildEntity> childEntities = parentEntity.getChildEntities();
parentEntityRepository.save(parentEntity);
for (ChildEntity childEntity : childEntities) {
childEntity.setParentEntity(parentEntity);
childEntityRepository.save(childEntity);
}
}
}
Controller层:
@RestController
@RequestMapping("/entities")
public class EntityController {
@Autowired
private EntityService entityService;
@PostMapping
public void saveParentWithChildEntities(@RequestBody ParentEntity parentEntity) {
entityService.saveParentWithChildEntities(parentEntity);
}
}
这样,当调用保存父实体及其关联子实体的接口时,Spring会自动将父实体和子实体保存到数据库中,并建立它们之间的关联关系。
领取专属 10元无门槛券
手把手带您无忧上云