我正在使用JPA構建JSF CRUD Web應用程序。我想列出所有的實體類型Supplier
我可以從數據庫中獲取。但是,在創建列表視圖時,Supplier
中的一個字段(articleList
)不是必需的,並且在列出Supplier
的所有內容時,如果獲取該列表視圖,則會佔用大量時間。在這種情況下是否有辦法抑制這種情況,但在查看Supplier
的詳細信息時是否獲取了該字段信息。列出的JPA實體持久字段未被提取
這是Supplier
:
@Entity
@Table(name = "supplier")
@NamedQueries({
@NamedQuery(name = "Supplier.findAll", query = "SELECT s FROM Supplier s"),
@NamedQuery(name = "Supplier.findBySid", query = "SELECT s FROM Supplier s WHERE s.sid = :sid")})
public class Supplier implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "SID")
private Short sid;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 255)
@Column(name = "Supplier")
private String supplier;
@OneToMany(cascade = {CascadeType.MERGE,CascadeType.REMOVE,CascadeType.REFRESH}, mappedBy = "supplierSID")
private List<Article> articleList;
我不wan't articleList
執行的findAll查詢時,從數據庫填充。我能以某種方式控制它嗎?
根據[documentation](http://docs.oracle.com/javaee/6/api/javax/persistence/OneToMany.html#fetch%28%29),「@ OneToMany」應該已經具有獲取類型LAZY ,所以你要麼重寫某處或訪問列表。任何你在某處調用'articleList.size()'的機會? – Thomas
不,我沒那麼做。我不知道懶惰提取,並且@ OneToMany會默認這個。這更像是一個假設,它可能會成爲一個問題。 – numfar
*除了OneToOne和ManyToOne之外,所有關係的默認獲取類型都是LAZY,* – MariuszS