Mam pytanie nie znalazłem metody na globalną zmianę dla aplikacji sposobu pobierania danych parametr fetch w encji, w JEE WEB APPLICATION , ustawienia domyślnego sposobu pobierania danych w EclipseLink, czyli EAGER na LAZY.
Więc zmodyfikowałem wszystkie encje, poniżej przykład jednej encji zrobiłem to automatycznie do wszystkich adnotacji relacji bez względu jakich, dodałem
atrybut fetch=FetchType.LAZY by móc uzyskać w całej aplikacji ten tym pobierania danych.
Czy to podejście jest prawidłowe, czy powstały jednak "głupoty w kodzie".
kod encji przed zmianą ( część pliku )
@Entity
@Table(name = "POZYCJE_WZ")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "PozycjeWz.findAll", query = "SELECT p FROM PozycjeWz p"),
@NamedQuery(name = "PozycjeWz.findByIdPozycjiWz", query = "SELECT p FROM PozycjeWz p WHERE p.idPozycjiWz = :idPozycjiWz"),
@NamedQuery(name = "PozycjeWz.findByIdNaglowkaWz", query = "SELECT p FROM PozycjeWz p WHERE p.idNaglowkaWz.idNaglowkaWz = :idNaglowkaWz"),
@NamedQuery(name = "PozycjeWz.findByNrPozycji", query = "SELECT p FROM PozycjeWz p WHERE p.nrPozycji = :nrPozycji"),
@NamedQuery(name = "PozycjeWz.findByIlosc", query = "SELECT p FROM PozycjeWz p WHERE p.ilosc = :ilosc"),
@NamedQuery(name = "PozycjeWz.findByCenaSprzedazyNetto", query = "SELECT p FROM PozycjeWz p WHERE p.cenaSprzedazyNetto = :cenaSprzedazyNetto"),
@NamedQuery(name = "PozycjeWz.findByStawkaVat", query = "SELECT p FROM PozycjeWz p WHERE p.stawkaVat = :stawkaVat")})
public class PozycjeWz implements Serializable {
private static final long serialVersionUID = 1L;
// @Max(value=?) @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID_POZYCJI_WZ")
private BigDecimal idPozycjiWz;
@Basic(optional = false)
@NotNull
@Column(name = "NR_POZYCJI")
private short nrPozycji;
@Basic(optional = false)
@NotNull
@Column(name = "ILOSC")
private BigDecimal ilosc;
@Basic(optional = false)
@NotNull
@Column(name = "CENA_SPRZEDAZY_NETTO")
private BigDecimal cenaSprzedazyNetto;
@Basic(optional = false)
@NotNull
@Column(name = "STAWKA_VAT")
private BigDecimal stawkaVat;
@JoinColumn(name = "ID_NAGLOWKA_WZ", referencedColumnName = "ID_NAGLOWKA_WZ")
@ManyToOne(optional = false)
private NaglowkiWz idNaglowkaWz;
@JoinColumn(name = "ID_POZYCJI_MM", referencedColumnName = "ID_POZYCJI_MM")
@ManyToOne
private PozycjeMm idPozycjiMm;
@JoinColumn(name = "ID_POZYCJI_PZ", referencedColumnName = "ID_POZYCJI_PZ")
@ManyToOne
private PozycjePz idPozycjiPz;
@JoinColumn(name = "ID_TOWARU", referencedColumnName = "ID_TOWARU")
@ManyToOne(optional = false)
private Towary idTowaru;
poprawiony kod encji
@Entity
@Table(name = "POZYCJE_WZ")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "PozycjeWz.findAll", query = "SELECT p FROM PozycjeWz p"),
@NamedQuery(name = "PozycjeWz.findByIdPozycjiWz", query = "SELECT p FROM PozycjeWz p WHERE p.idPozycjiWz = :idPozycjiWz"),
@NamedQuery(name = "PozycjeWz.findByIdNaglowkaWz", query = "SELECT p FROM PozycjeWz p WHERE p.idNaglowkaWz.idNaglowkaWz = :idNaglowkaWz"),
@NamedQuery(name = "PozycjeWz.findByNrPozycji", query = "SELECT p FROM PozycjeWz p WHERE p.nrPozycji = :nrPozycji"),
@NamedQuery(name = "PozycjeWz.findByIlosc", query = "SELECT p FROM PozycjeWz p WHERE p.ilosc = :ilosc"),
@NamedQuery(name = "PozycjeWz.findByCenaSprzedazyNetto", query = "SELECT p FROM PozycjeWz p WHERE p.cenaSprzedazyNetto = :cenaSprzedazyNetto"),
@NamedQuery(name = "PozycjeWz.findByStawkaVat", query = "SELECT p FROM PozycjeWz p WHERE p.stawkaVat = :stawkaVat")})
public class PozycjeWz implements Serializable {
private static final long serialVersionUID = 1L;
// @Max(value=?) @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
@Id
@Column(name = "ID_POZYCJI_WZ", columnDefinition = "BigDecimal GENERATED BY DEFAULT AS IDENTITY ")
@ReturnInsert(returnOnly = true)
private BigDecimal idPozycjiWz;
@Basic(optional = false)
@NotNull
@Column(name = "NR_POZYCJI")
private short nrPozycji;
@Basic(optional = false)
@NotNull
@Column(name = "ILOSC")
private BigDecimal ilosc;
@Basic(optional = false)
@NotNull
@Column(name = "CENA_SPRZEDAZY_NETTO")
private BigDecimal cenaSprzedazyNetto;
@Basic(optional = false)
@NotNull
@Column(name = "STAWKA_VAT")
private BigDecimal stawkaVat;
@JoinColumn(name = "ID_NAGLOWKA_WZ", referencedColumnName = "ID_NAGLOWKA_WZ")
@ManyToOne(fetch=FetchType.LAZY, optional = false)
private NaglowkiWz idNaglowkaWz;
@JoinColumn(name = "ID_POZYCJI_MM", referencedColumnName = "ID_POZYCJI_MM")
@ManyToOne (fetch=FetchType.LAZY)
private PozycjeMm idPozycjiMm;
@JoinColumn(name = "ID_POZYCJI_PZ", referencedColumnName = "ID_POZYCJI_PZ")
@ManyToOne (fetch=FetchType.LAZY)
private PozycjePz idPozycjiPz;
@JoinColumn(name = "ID_TOWARU", referencedColumnName = "ID_TOWARU")
@ManyToOne(fetch=FetchType.LAZY, optional = false)
private Towary idTowaru;
Dziękuję serdecznie