Merhaba arkadaşlar,

Bir projemde hibernate ile ilgili hiç beklemediğim bir sorunla karşılaştım.Şimdiye kadar yaptığım basit projelerde ilişkili tablolarım çok da fazla ilişkili değildi.sorunlarla karşılaştığım bu son projede ise, tabloların birbirleriyle çok fazla ilişkisi var.Sorun tam olarak şu örneğin önceki projelerimde şu aşağıdaki şekilde yapardım.one to one, one to many.. gibi anotasyonları degisken tanımlarken yazardım.bir problemle de karşılaşmazdım.Fakat 2 gündür iki tablo arasında many to many ilişkiyi yapana kadar canım cıktı diyebilirim.En sonunda yapabilmeme vesile olan şeyse, bütün annotasyonları değişkenlerin get motodlarının üstüne yazmaktı. Kısaca , bu annotasyonları get metoduna yazmak ile degiskeni tanımlarken en başta yazmak arasında fark nedir? Yardımcı olursanız sevinirim.Herkese hayırlı akşamlar tekrardan.

@Entity
public class Gezi implements Serializable{

    /**
     * 
     */
    private static final long serialVersionUID = 709376317438683452L;

    private int geziId;
    private String baslangicTarihi;
    private List<Geo> geo;
    private Set<Gezgin> gezginler=new HashSet<Gezgin>(0);
    private Geziler geziler;
    @Id
    @GeneratedValue
    public int getGeziId() {
        return geziId;
    }

    public void setGeziId(int geziId) {
        this.geziId = geziId;
    }

    @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinTable(name = "gezi_gezgin", joinColumns = { 
            @JoinColumn(name = "geziId", nullable = false, updatable = false) }, 
            inverseJoinColumns = { @JoinColumn(name = "gezginId", 
                    nullable = false, updatable = false) })
    @JsonIgnore
    public Set<Gezgin> getGezginler() {
        return gezginler;
    }
    public void setGezginler(Set<Gezgin> gezginler) {
        this.gezginler = gezginler;
    }
     @OneToMany(cascade = CascadeType.ALL, mappedBy = "gezi")
    public List<Geo> getGeo() {
        return geo;
    }
    public void setGeo(List<Geo> geo) {
        this.geo = geo;
    }

    public String getBaslangicTarihi() {
        return baslangicTarihi;
    }

    public void setBaslangicTarihi(String baslangicTarihi) {
        this.baslangicTarihi = baslangicTarihi;
    }

    @ManyToOne(fetch = FetchType.LAZY)

    @JoinColumn(name="gezilerId", nullable = false)
    @JsonIgnore
    public Geziler getGeziler() {
        return geziler;
    }

    public void setGeziler(Geziler geziler) {
        this.geziler = geziler;
    } 
}

@Entity
public class Gezgin implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = -3665393712512319150L;

    private int gezginId;

    private Set<Gezi> geziler=new HashSet<Gezi>(0);
     private Geziler gezikutusu;

    private Favoriler favoriler;

    @Id
    @GeneratedValue(strategy = IDENTITY)
    public int getGezginId() {
        return gezginId;
    }

    public void setGezginId(int gezginId) {
        this.gezginId = gezginId;
    }
    @ManyToMany(fetch = FetchType.LAZY, mappedBy = "gezginler")
    @JsonIgnore

    public Set<Gezi> getGeziler() {
        return geziler;
    }

    public void setGeziler(Set<Gezi> geziler) {
        this.geziler = geziler;
    }

        @OneToOne
        @JoinColumn(name="gezilerId")
        @JsonIgnore
    public Geziler getGezikutusu() {
        return gezikutusu;
    }
    public void setGezikutusu(Geziler gezikutusu) {
        this.gezikutusu = gezikutusu;
    }

    @OneToOne
    @JoinColumn(name="favId")
    @JsonIgnore
    public Favoriler getFavoriler() {
        return favoriler;
    }

    public void setFavoriler(Favoriler favoriler) {
        this.favoriler = favoriler;
    }

}

soruldu: 02 Haz, 16:36

seyid21's gravatar image

seyid21
111610
cevap kabul oranı: 50%

değiştirildi: 04 Haz, 20:15

JPA'da ilişkisel anotasyonların field veya get metodunda kullanımı çalışabilirliği açısından fark etmiyor diye biliyorum. Ancak get metodunda kullanım kapsülleme açısından iyi bir yaklaşım değil bence, ciddi hatalara yol açabilir.

Yazdığın sınıf JavaBean yapısına tamamen uygun değil mi? Mesajına anotasyonlarıyla birlikte get ve set metotlarını ekler misin?

(03 Haz, 03:17) pvalue pvalue's gravatar image

Suanki haliyle program sorunsuz çalışmakta.Fakat bundan once sorun olan koddan farkı anotasyonların get metodunda değilde, başta tanımlarken kullanmamdaydı.

(04 Haz, 20:16) seyid21 seyid21's gravatar image
1

Evet her şey yolunda gözüküyor. JsonIgnore'lar bozuyor olabilir mi? istersen onları class seviyesine, diğer anotasyonları da field seviyesine alıp dene: @JsonIgnoreProperties({"gezginler", "geziler"})

(06 Haz, 05:43) pvalue pvalue's gravatar image

ondan ziyade, bazı anotasyonları get metodunda bazılarını da değişken tanımlaması sırasında etiketlediğimden oluyor sanırım.Projeye döndüğüm vakit tekrardan kontrol edeceğim.Saygılar.

(07 Haz, 16:45) seyid21 seyid21's gravatar image
Bu soruya ilk cevap veren sen ol!
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×128
×109
×42
×3
×2

Soruldu: 02 Haz, 16:36

Görüntüleme: 231 kez

Son güncelleme: 07 Haz, 16:45

powered by BitNami OSQA