我面临的问题是获取Name和Price属性的null值,并使用Spring bootJPA使用接口JpaRepository保存到Mysql。它只将数据cid保存到mysql db中,所有其他字段都为MySql Db中的Name和price字段保存null。我用的是MySQL数据库。
POJO类
@Data
@Entity
@Table(name = "COURSE_DTLS")
public class Course {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer cid;
private String name;
private Double price;
}
回购类
import java.io.Serializable;
import org.springframework.data.jpa.repository.JpaRepository;
import in.ashokit.binding.Course;
public interface CourseRepository extends JpaRepository<Course, Serializable> {
}
服务等级
@Service
public class CourseServiceImpl implements CourseService {
@Autowired
private CourseRepository courseRepo;
@Override
public String upsert(Course course) {
courseRepo.save(course); // upsert (insert / update based on PK)
return "success";
}
@Override
public Course getById(Integer cid) {
Optional<Course> findById = courseRepo.findById(cid);
if (findById.isPresent()) {
return findById.get();
}
return null;
}
@Override
public List<Course> getAllCourses() {
return courseRepo.findAll();
}
@Override
public String deleteById(Integer cid) {
if (courseRepo.existsById(cid)) {
courseRepo.deleteById(cid);
return "Delete Success";
} else {
return "No Record Found";
}
}
}
控制器类
@RestController
public class CourseRestController {
@Autowired
private CourseService courseService;
@PostMapping("/course")
public ResponseEntity<String> createCourse(@RequestBody Course course) {
String status = courseService.upsert(course);
return new ResponseEntity<>(status, HttpStatus.CREATED);
}
@GetMapping("/course/{cid}")
public ResponseEntity<Course> getCourse(@PathVariable Integer cid) {
Course course = courseService.getById(cid);
return new ResponseEntity<>(course, HttpStatus.OK);
}
@GetMapping("/courses")
public ResponseEntity<List<Course>> getAllCourses() {
List<Course> allCourses = courseService.getAllCourses();
return new ResponseEntity<>(allCourses, HttpStatus.OK);
}
@PutMapping("/course")
public ResponseEntity<String> updateCourse(@RequestBody Course course) {
String status = courseService.upsert(course);
return new ResponseEntity<>(status, HttpStatus.OK);
}
@DeleteMapping("/course/{cid}")
public ResponseEntity<String> deleteCourse(@PathVariable Integer cid) {
String status = courseService.deleteById(cid);
return new ResponseEntity<>(status, HttpStatus.OK);
}
}
2条答案
按热度按时间bihw5rsg1#
JpaRepository
中的第二个值应该是实体类的主键类型,在本例中为Integer。按如下方式更改Repo
类:ruarlubt2#
你的仓库是错误的。
更改此:
像这样: