整个对象,我有以下类别:获取主键,而不是在一对多的关系
@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
前取不急于类似,它只是另一种方式来获得渴望 –
是的数据,但在这种情况下,你只有当你需要得到相关的对象。不是每次。 –