整個對象,我有以下類別:獲取主鍵,而不是在一對多的關係
@Entity
@Table(name = "elements")
@Inheritance(strategy=InheritanceType.JOINED)
@XmlRootElement
public abstract class Elements implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "idelement")
private Integer idElement;
@Basic(optional = false)
@Column(name = "code")
private String code;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "idElement")
@Fetch(value = FetchMode.SUBSELECT)
private Collection<Alarms> alarmsCollection;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "idElement")
@Fetch(value = FetchMode.SUBSELECT)
private Collection<ElementsHistorical> elementsHistoricalCollection;
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.PERSIST, mappedBy = "elementsCollection")
@Fetch(value = FetchMode.SUBSELECT)
private Collection<ElementsGroups> elementsGroupsCollection;
//Constructors, getters and setters
}
@Entity
@Table(name = "alarms")
@XmlRootElement(name = "Alarms")
public class Alarms implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "idalarm")
private Integer idAlarm;
@JoinColumn(name = "idelement", referencedColumnName = "idelement")
@ManyToOne(optional = false)
private Elements idElement;
//Constructors, getters and setters
}
我創建了一個Web服務的球衣與CRUD操作的DAO類治療數據。通過這個實現,當我調用GET
方法時,我得到之內的整個Elements
對象。這就是所謂的DAO方法:
public List<Alarms> getAlarms(){
Session session = SessionUtil.getSession();
Query query = session.createQuery("from Alarms");
List<Alarms> alarms = query.list();
session.close();
return alarms;
}
我不希望這fetch = FetchType.EAGER
提取類型,因爲我只需要的Elements
的PK,但是經過一番研究,這是我發現讓我的服務工作的唯一辦法。 我試過this和this的方法,但我一直無法使它工作。
它沒有工作,返回的結果相同 – Juan
前取不急於類似,它只是另一種方式來獲得渴望 –
是的數據,但在這種情況下,你只有當你需要得到相關的對象。不是每次。 –