نمایش نتایج 1 تا 5 از 5

نام تاپیک: لود نکردن داده های جدول فرزند

  1. #1
    کاربر دائمی آواتار Restlesa
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    تهران
    سن
    32
    پست
    659

    لود نکردن داده های جدول فرزند

    سلام بر همگی
    دو تا جدول با نام های Site و IP دارم که رابطه بین اون ها OneToMany هستش که سورس دو تا کلاس رو در ادامه ضمیمه کردم

    کلاس Site
    @Entity
    @Table(name = "tbl_site", uniqueConstraints = { @UniqueConstraint(columnNames = "name", name = "name_un"), @UniqueConstraint(columnNames = "octed2", name = "octed2_un") })
    public class Site implements Serializable {

    private static final Long serialVersionUID = 3L;

    private Long site_id;

    private String name;
    private String octed2;

    private List<IP> ip;

    public Site() {}

    public Site(String name, String octed2) {
    this.name = name;
    this.octed2 = octed2;
    }

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "site_id", nullable = false, unique = true, columnDefinition = "INT unsigned")
    public Long getSite_id() {
    return site_id;
    }

    public void setSite_id(Long site_id) {
    this.site_id = site_id;
    }

    @Column(name = "name", nullable = false, length = 30)
    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }

    @Column(name = "octed2", nullable = false, length = 3)
    public String getOcted2() {
    return octed2;
    }

    public void setOcted2(String octed2) {
    this.octed2 = octed2;
    }

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "site")
    @Fetch(value = FetchMode.SUBSELECT)
    public List<IP> getIp() {
    return ip;
    }

    public void setIp(List<IP> ip) {
    this.ip = ip;
    }
    }


    کلاس IP
    @Entity
    @Table(name = "tbl_ips", uniqueConstraints = { @UniqueConstraint(columnNames = "ip_address", name = "ip_address_un")})
    public class IP implements Serializable {

    private static final Long serialVersionUID = 3L;

    private Long ipId;

    private String IPAddress;

    private Site site;

    public IP() {}

    public IP(String IPAddress) {
    this.IPAddress = IPAddress;
    }

    public IP(String IPAddress, Site site) {
    this.IPAddress = IPAddress;
    this.site = site;
    }

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ip_id", nullable = false, unique = true, columnDefinition = "INT unsigned")
    public Long getIpId() {
    return ipId;
    }

    public void setIpId(Long ipId) {
    this.ipId = ipId;
    }

    @Column(name = "ip_address", nullable = false, length = 15)
    public String getIPAddress() {
    return IPAddress;
    }

    public void setIPAddress(String IPAddress) {
    this.IPAddress = IPAddress;
    }

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "site_id")
    public Site getSite() {
    return site;
    }

    public void setSite(Site site) {
    this.site = site;
    }
    }


    در جایی از پروژه ام نیاز دارم که فقط تمامی داده های جدول Site رو بخونم برای این کار از دستور زیر استفاده کردم:
    @Override
    public List getAllSite() {
    return sessionFactory.getCurrentSession().createQuery("fr om Site order by site_id desc").getResultList();
    }


    حالا مشکل کار اینجاس که با استفاده از دستور بالا و با توجه به اینکه از دستور fetch = FetchType.LAZY هم در ایجاد رابطه بین دو جدول استفاده کردم تمامی اطلاعات دو جدول خونده میشه
    برای اینکه فقط اطلاعات جدول Site خونده بشه کار دیگه ای هم باید انجام بدم ؟؟؟

  2. #2
    کاربر دائمی آواتار Restlesa
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    تهران
    سن
    32
    پست
    659

    نقل قول: لود نکردن داده های جدول فرزند

    از مدیران بخش خواهش می کنم راهنماییم کنن

  3. #3
    کاربر دائمی آواتار vahid-p
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    1,140

    نقل قول: لود نکردن داده های جدول فرزند

    متاسفانه بخش جاوا خیلی کم رونق شده و مدیران نیستند.
    منم Hibernate رو زیاد کار نکردم، ولی طبق تعریف FetchType.LAZY باید اونطوری باشه که شما میگید.
    به نظرم آموزش های اینترنت رو سرچ کنید، شاید یه جای کار اشتباه کردید.
    getAllSite چی رو override میکنه؟ برای این متد لازم نیست annotation ها رو اضافه کنید؟ مگر اینکه به صورت داخلی از getSite استفاده کنه که بعید میدونم!

    این لینک رو یه نگاه بنداز:
    https://vladmihalcea.com/2013/10/17/...etch-strategy/

  4. #4
    کاربر دائمی آواتار Restlesa
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    تهران
    سن
    32
    پست
    659

    نقل قول: لود نکردن داده های جدول فرزند

    نقل قول نوشته شده توسط vahid-p مشاهده تاپیک
    متاسفانه بخش جاوا خیلی کم رونق شده و مدیران نیستند.
    متاسفانه همین طوره که میگی

    getAllSite چی رو override میکنه؟ برای این متد لازم نیست annotation ها رو اضافه کنید؟ مگر اینکه به صورت داخلی از getSite استفاده کنه که بعید میدونم!
    یه کلاس interface Site دارم و این متد متد پیاده سازی شده کلاس interface Site هستش و کارش اینه که تمامی رکورد های ذخیره شده در جدو.ل Site رو بر می گردونه + تمامی رابطه هایی که با جدول های دیگه داره که نمی خوام داده های جدول های دیگه برام واکشی بشه

    تو اینترنت هم خیلی سرچ زدم و دقیقا از نمونه هایی که پیدا کردم استفاده کردم اما نمی دونم چرا باز داده های اضافه واکشی میشن

  5. #5
    کاربر دائمی آواتار vahid-p
    تاریخ عضویت
    آذر 1391
    محل زندگی
    تهران
    پست
    1,140

    نقل قول: لود نکردن داده های جدول فرزند

    متد getSite هم اضافی بر میگردونه؟ (تو کلاس IP)

    جواب اینکه آیا getAllSite نیازی به annotation هایی که برای getSite گذاشتید نداره؟ نوع Fetch رو مشخص نکردید.
    البته مقدار پیشفرض داره که تو لینکی که دادم گفته:
    By default, the JPA @ManyToOne and @OneToOne annotations are fetched EAGERly, while the @OneToMany and @ManyToMany relationships are considered LAZY

    دو مورد دیگه رو هم چک کن.
    تو یه سورس کد نوشته بود //start new session to check fetch type . شما هم اگر قبلش از یه متد دیگه استفاده کردی، session رو close و بعد یکی دیگه درست کن.
    مورد بعد اینکه در اکثر مثال هایی که دیدم همراه با مشخص کردن FetchType از CascadeType هم استفاده کردن. CascadeType.All

    این لینک رو ببین: ​http://www.concretepage.com/hibernat...ate_annotation
    آخرین ویرایش به وسیله vahid-p : یک شنبه 20 فروردین 1396 در 22:07 عصر

تاپیک های مشابه

  1. پاسخ: 1
    آخرین پست: پنج شنبه 19 شهریور 1394, 12:40 عصر
  2. پاسخ: 3
    آخرین پست: یک شنبه 19 آذر 1391, 14:21 عصر
  3. کپی داده های جدول مقصد replication
    نوشته شده توسط dorna1985 در بخش SQL Server
    پاسخ: 2
    آخرین پست: جمعه 22 شهریور 1387, 13:29 عصر
  4. پاسخ: 16
    آخرین پست: یک شنبه 17 تیر 1386, 13:51 عصر
  5. پرینت از داده های جدول
    نوشته شده توسط behnosh59 در بخش SQL Server
    پاسخ: 4
    آخرین پست: پنج شنبه 23 فروردین 1386, 15:09 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •