JPA: проблема табличных отношений - PullRequest
1 голос
/ 06 июня 2011

У меня две таблицы: бронь и машина. Итак, у меня есть два класса:

Бронирование

@javax.persistence.Entity
@Table(name = "reservation")
@NamedQueries({
@NamedQuery(
        name = "getActiveReservationByStatus",
        query = "select reservation from Reservation reservation where reservation.status=:status")  
       })
public class Reservation implements Serializable {
    @javax.persistence.Id
    @Column(name = "reservation_id")
    @javax.persistence.GeneratedValue(strategy = javax.persistence.GenerationType.AUTO)
    private int id;
    @Column(name = "reservation_status")
    private int status = 1;
    @Column(name = "user_id")
    private int userId;

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy="reservation")
    private List<Machine> machineResultList;   
    public Reservation() {
    }

    public List<Machine> getMachineResultList() {
          return machineResultList;
    }
    public void setMachineResultList(List<Machine> machineResultList) {
        this.machineResultList = machineResultList;
    }

    //getters, setters...
}

машина

@javax.persistence.Entity
@Table(name = "testmachine")

@NamedQueries({
@NamedQuery(
        name = "getMachineByState",
        query = "select testmachine from TestMachine testmachine where testmachine.reservation.userId =:status") ,
@NamedQuery(
        name = "getMachineNameByReservation",
        query = "select machine from TestMachine machine where machine.reservation.status =:status")
      })

public class TestMachine implements Serializable {
    @javax.persistence.Id
    @Column(name = "machine_id")
    @javax.persistence.GeneratedValue(strategy = javax.persistence.GenerationType.AUTO)
    private int id;

    @ManyToOne(cascade= {CascadeType.REFRESH}, fetch=FetchType.LAZY)
    @JoinColumn(name="reservation_id")
    private Reservation reservation;

    @Column(name = "machine_state")
    private boolean state = false;
    @Column(name = "machine_ip")
    private String machineIP;

    public void setReservationId(Reservation reservation) {
        this.reservation = reservation;
    }

    public String getReservationId() {
        return reservation.getReservationPurpose();
    }

    //getters, setters... 

Если я использую запрос getActiveReservationByStatus, я могу получить значение из таблицы резервирования, используя методы получения и установки, определенные в классе Reservation. Но я не могу получить значения из machineResultList.

Как мне изменить метод getMachineResultList, чтобы можно было получать информацию из этого Списка (информацию из машинной таблицы)?

...