我无法弄清楚错误可能出在哪里。
订单.java:
package com.example.demo.model;
import jakarta.persistence.*;
@Entity
@Table(name = "orders")
public class Order {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column(name = "customer")
private String customer;
@Column(name = "description")
private String description;
@Column(name = "price")
private short price;
@Column(name = "readiness")
private boolean readiness;
public Order() {
}
public Order(String customer, String description, short price, boolean readiness) {
this.customer = customer;
this.description = description;
this.price = price;
this.readiness = readiness;
}
public long getId() {
return id;
}
public String getCustomer() {
return customer;
}
public void setCustomer(String customer) {
this.customer = customer;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public short getPrice() {
return price;
}
public void setPrice(short price) {
this.price = price;
}
public boolean isReady() {
return readiness;
}
public void setReadiness(boolean isReady) {
this.readiness = isReady;
}
@Override
public String toString() {
return "Order [id=" + id + ", customer=" + customer + ", desc=" + description + ", readiness=" + readiness + "]";
}
}
订单控制器.java:
package com.example.demo.controller;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.example.demo.model.Order;
import com.example.demo.repository.OrderRepository;
@CrossOrigin(origins = "http://localhost:8081")
@RestController
@RequestMapping("/api")
public class OrderController {
@Autowired
OrderRepository orderRepository;
@GetMapping("/orders")
public ResponseEntity<List<Order>> getAllOrders(@RequestParam(required = false) String customer) {
try {
List<Order> orders = new ArrayList<Order>();
if (customer == null)
orderRepository.findAll().forEach(orders::add);
else
orderRepository.findByCustomerContaining(customer).forEach(orders::add);
if (orders.isEmpty()) {
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
return new ResponseEntity<>(orders, HttpStatus.OK);
} catch (Exception e) {
return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@GetMapping("/orders/{id}")
public ResponseEntity<Order> getOrderById(@PathVariable("id") long id) {
Optional<Order> orderData = orderRepository.findById(id);
if (orderData.isPresent()) {
return new ResponseEntity<>(orderData.get(), HttpStatus.OK);
} else {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
}
@PostMapping("/orders")
public ResponseEntity<Order> createOrder(@RequestBody Order order) {
try {
Order _order = orderRepository
.save(new Order(order.getCustomer(), order.getDescription(), order.getPrice(), false));
return new ResponseEntity<>(_order, HttpStatus.CREATED);
} catch (Exception e) {
return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@PutMapping("/orders/{id}")
public ResponseEntity<Order> updateOrder(@PathVariable("id") long id, @RequestBody Order order) {
Optional<Order> orderData = orderRepository.findById(id);
if (orderData.isPresent()) {
Order _order = orderData.get();
_order.setCustomer(order.getCustomer());
_order.setDescription(order.getDescription());
_order.setReadiness(order.isReady());
return new ResponseEntity<>(orderRepository.save(_order), HttpStatus.OK);
} else {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
}
@DeleteMapping("/orders/{id}")
public ResponseEntity<HttpStatus> deleteOrder(@PathVariable("id") long id) {
try {
orderRepository.deleteById(id);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
} catch (Exception e) {
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@DeleteMapping("/orders")
public ResponseEntity<HttpStatus> deleteAllOrders() {
try {
orderRepository.deleteAll();
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
} catch (Exception e) {
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@GetMapping("/orders/readiness")
public ResponseEntity<List<Order>> findByPublished() {
try {
List<Order> orders = orderRepository.findByrReadiness(true);
if (orders.isEmpty()) {
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
return new ResponseEntity<>(orders, HttpStatus.OK);
} catch (Exception e) {
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
}
订单存储库.java:
package com.example.demo.repository;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import com.example.demo.model.Order;
public interface OrderRepository extends JpaRepository<Order, Long>{
List<Order> findByrReadiness(boolean readiness);
List<Order> findByCustomerContaining(String customer);
}
应用程序属性:
spring.application.name=demo
spring.datasource.url= jdbc:postgresql://localhost:5432/dry_cleaning
spring.datasource.username= postgres
spring.datasource.password= 1234
server.port=8081
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation= true
spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.PostgreSQLDialect
# Hibernate ddl auto (create, create-drop, validate, update)
spring.jpa.hibernate.ddl-auto= update
pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.4.0</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<url/>
<licenses>
<license/>
</licenses>
<developers>
<developer/>
</developers>
<scm>
<connection/>
<developerConnection/>
<tag/>
<url/>
</scm>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>