Spring MVCアプリケーションをSpring REST + Angular2アプリケーションのコンボに変換しようとしています。これは私の 'Ticket.java'エンティティクラスですsetter)異なるタイプのオブジェクトを返すメソッドを自動実装するCrudRepositoryインターフェイスを使用する
ticket.idで与えられたすべての顧客を返すメソッドをTicketDAOに書き出すにはどうすればよいですか?ここで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;
私はJpaRepositoryを使用したプロジェクトのための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;