我正在用 Spring 和 Angular 编写我的第一个 Web 应用程序。我使用 PHP 大约 10 年,然后在过去的 10 年中发现并使用 Rails,并且做了几个 ASP 项目来启动,所以我对 Web 开发并不陌生,总的来说。我正在尝试创建我的第一个完整的 CRUD 操作集,但是我找不到有关如何为“复杂”对象(带有父对象和/或子对象)创建编辑表单的文档。官方的 Angular 指南仅止于此,我在互联网上的任何地方都找不到一个完整的教程。在我的示例中,我想要一个“产品”的编辑组件,我可以在其中更改当前选择的“引擎”。
在 Spring 中,我为两个初始模型配置了类、存储库和控制器,如下所示:
引擎(父)-> 产品(子)
Product.java:
package com.xyz.cddm_ng;
import lombok.*;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.UpdateTimestamp;
import javax.persistence.*;
import java.time.LocalDateTime;
import static javax.persistence.GenerationType.IDENTITY;
@Entity
@Getter @Setter
@NoArgsConstructor
@ToString @EqualsAndHashCode
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")
public class Product {
@Id
@GeneratedValue(strategy=IDENTITY)
Long id;
@NonNull String title;
String note;
@CreationTimestamp
LocalDateTime createDateTime;
@UpdateTimestamp
LocalDateTime updateDateTime;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "engine_id")
@JsonManagedReference
Engine engine;
}
Engine.java (片段):
@OneToMany(fetch = FetchType.LAZY, mappedBy = "engine")
@JsonBackReference
Collection<Product> products;
控制器和存储库刚刚被淘汰。
ProductController.java:
package com.xyz.cddm_ng;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("products")
@CrossOrigin(origins = "http://localhost:4200")
class ProductController { }
ProductRepository.java:
package com.xyz.cddm_ng;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
import org.springframework.web.bind.annotation.CrossOrigin;
@RepositoryRestResource
@CrossOrigin(origins = "http://localhost:4200")
interface ProductRepository extends JpaRepository<Product, Long> { }
湖上湖
相关分类