0
我想將Spring MVC應用程序轉換爲Spring REST + Angular2應用程序的組合。這是我的「Ticket.java」實體類(跳過getter和setter)使用CrudRepository接口來自動實現返回不同類型的對象的方法
@Entity
@Table(name="ticket")
public class Ticket {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private Integer id;
@ManyToOne
@JoinColumn(name="bookings_id")
private Booking booking;
@ManyToOne
@JoinColumn(name="customer_id")
private Customer customer;
@Column(name="seat_no")
private int seatNumber;
public Ticket(){
}
如何在TicketDAO中編寫一個方法,返回給定booking.id的所有客戶?這裏是TicketDAO.java接口
public interface TicketDAO extends CrudRepository<Ticket, Integer>{
// I want to auto-implement such type of method using CrudRepository
// public List<Customer> getCustomersBooking(int bId); }
我以前實現這樣的方法爲:
@Override
public List<Customer> getCustomersBooking(int bId) {
Session currentSession = sessionFactory.getCurrentSession();
logger.info("DAOgetCustomersBooking: D1");
List<Customer> customer = new ArrayList<Customer>();
Query<Ticket> theQuery =
currentSession.createQuery("from Ticket where bookings_id = "+bId, Ticket.class);
List<Ticket> tickets = theQuery.getResultList();
for (Ticket temp: tickets){
customer.add(temp.getCustomer());
}
return customer;
}
但現在我想自動執行這種類型的TicketDAO接口使用CrudRepository方法。我將如何編寫一個方法聲明使我能夠這樣做?
僅供參考,Booking.java
@Entity
@Table(name="bookings")
public class Booking {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private Integer id;
@ManyToOne
@JoinColumn(name="van_id")
private Van van;
@ManyToOne
@JoinColumn(name="driver_id")
private Driver driver;
@ManyToOne
@JoinColumn(name="route_id")
private Route route;
@Column(name="registered_seats")
private int registeredSeats;
@Column(name="departure_time")
private String departureTime;
@Column(name="arival_time")
private String arrivalTime;
@Column(name="departure_date")
private String departureDate;
@Column(name="expected_price")
private int expectedPrice;
//Ticket.java reference
@OneToMany(mappedBy="booking",fetch=FetchType.LAZY,cascade=CascadeType.ALL)
private Set<Ticket> tickets;
//Webdata.java reference
@OneToOne(mappedBy="bookingWebdata",fetch=FetchType.LAZY,cascade=CascadeType.ALL)
private Webdata webdata;
Customers.java
@Entity
@Table(name="customer")
public class Customer {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private Integer id;
@Column(name="first_name")
private String firstName;
@Column(name="last_name")
private String lastName;
@Column(name="email")
private String email;
@Column(name="username")
private String username;
@Column(name="password")
private String password;
@Column(name="regnumber")
private int regNumber;
@Column(name="phonenumber")
private int phoneNumber;
@Column(name="flagged")
private int flagged;
//Ticket.java reference
@OneToMany(mappedBy="customer",cascade=CascadeType.ALL)
private Set<Ticket> tickets;