Merhaba,

@PrePersist ve @PreUpdate kullanıyorum ekleyen,guncelleyenleri otomatik olarak ekleme ve güncelleme işleminden sonra yapsın diye. Show_sql yapıp kayıtı eklerken insert cümlesini çalıştırdıktan sonra bir select cümlesi çalıştırıyor ama Update işleminden sonra select çalıştırmadığından dolayı sayfayı yenilemeden güncelleyen ve güncelleme tarihlerini göremiyorum yani @PreUpdate annotioni ile yapılan işlemleri göremiyorum. Bunun sebebi ne olabilir acaba?

Yardımlarınız için teşekkürler

@PrePersist
protected void setCreateDate() {
    TblKullanicilar kullanicilar = (TblKullanicilar) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("kullanici");
    ekleyen=guncelleyen=kullanicilar.getId();
    eklemeTarihi = guncellemeTarihi = new Date();

}

@PreUpdate
protected void setChangeDate() {
    TblKullanicilar kullanicilar = (TblKullanicilar) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("kullanici");
    guncelleyen=kullanicilar.getId();
    guncellemeTarihi = new Date();
}

soruldu: 02 Haz '14, 16:15

kurtomerfaruk's gravatar image

kurtomerfaruk
1.3k222940
cevap kabul oranı: 30%

değiştirildi: 02 Haz '14, 17:49

CemIkta's gravatar image

CemIkta ♦
19.9k29125190

@kurtomerfaruk soruya ilgili kod bölümlerini eklerseniz daha hizli cevaplar alabilirsiniz!

(02 Haz '14, 16:17) CemIkta ♦ CemIkta's gravatar image

JPA Entity'ler model katmanindadir ve model katmanindan JSF-Controller, FacesContext, Service veya DAO (Repository) lere erismeniz yanlis. Tam tersini yapmalisiniz JSF-Controller, Service veya DAO icinde model degerlerinizi setleyip kayit etmelisiniz. Model katmani (model layer) hicbir zaman Service, JSF-Controller Session, FacesContext gibi katmanlari/yapilari tanimazlar, tanimamalilar!

Sizin kod örneginizdeki yapiyi @PrePersist ve @PreUpdate icinde this.guncellemeTarihi = new Date(); verin. JSF-Controller icinde save() metodunda ise model.setEkleyen(kullanici.getId()); verdikten sonra kayit islemi yapin. Eger her JSF-Formunda setEkleyen() ve setGuncelleyen() metodlarini otomatik kullanmak istiyorsaniz bir tane AbstractController class'i yazip, butun JSF-Controller'inizi bu class'dan extend yapabilirsiniz.

Bu yapiyi @MappedSuperclass annotation'u ile BaseEntity yazarak daha basit yapabilirsiniz. Blogumda detayli bir anlatim mevcut: Base entity class in JPA

permanent link

cevaplandı: 02 Haz '14, 17:48

CemIkta's gravatar image

CemIkta ♦
19.9k29125190
cevap kabul oranı: 36%

Cem bey çok güzel açıklamışsınız. Teşekkürler

(03 Haz '14, 04:09) mceliksoy ♦ mceliksoy's gravatar image

Cem Bey,Sarparda Yazılarınızı okumuştum dediğiniz şekilde de yaptım fakat değişen birşey yok yeni kayıt eklerken sorun yok fakat kayıt güncellerken sayfayı yeniden tıklayıp yenileyene kadar bilgiler görünmüyor

(03 Haz '14, 12:03) kurtomerfaruk kurtomerfaruk's gravatar image

Veritabanina update yaptiginizda veritabanindaki guncelleyen alani update oluyor mu? Veritabani update olup view de gorunmuyorsa, view'i de refresh yapmaniz gerekir!

(04 Haz '14, 05:55) CemIkta ♦ CemIkta's gravatar image

Cem Bey veritabanı update oluyor MappedSuperclass da bulunan değişkenler haricindekiler de güncellenmiş gözüküyor sadece guncelleyen ve guncellemeTarihinde herhangi bir değişiklik olmuyor. Ama sayfayı yeniden yükleyince geliyor. Show_sql ile arka tarafta çalışan sql cümlelerini açtığımda şöyle bir durum var. Eğer yeni kayıt eklersem Insert Into yapıp sonrasında Select çalışıyor fakat kayıt güncelleme işleminde Update sorgunu çalıştırıyor ama Select cumlesi yok ?

(04 Haz '14, 06:05) kurtomerfaruk kurtomerfaruk's gravatar image

Buyuk ihtimalle entityManager.merge(selectedModel) gibi kullaniyorsundur. Merge isleminde yeni entity modeli alman gerekir. Model selectedModel = entityManager.merge(selectedModel); seklinde. Boylece update yapilan obje yeni degerleriyle yeniden gelir. Bu update edilmis objeyi de view'e verirsen update edilmis degerlerle gorunmesi lazim.

(04 Haz '14, 06:10) CemIkta ♦ CemIkta's gravatar image

bu şekildi
public void edit(T entity) { getEntityManager().merge(entity); } söylemiş olduğunuz gibi public void edit(T entity) { entity=getEntityManager().merge(entity); } gibi değiştirdim fakat değişen birşey yok

(04 Haz '14, 13:02) kurtomerfaruk kurtomerfaruk's gravatar image

Yardımlarınız için teşekkürler. Yazdığım kodda hata varmış Eklerken kaydettikten sonra Collection'ın içerisini boşalttığımdan sonra bir Select cümlesi oluşturuyordu. Güncellerken onu yapmıyordum. Güncellerkende Collection'ın değerini null yapınca çalıştı.

(05 Haz '14, 14:19) kurtomerfaruk kurtomerfaruk's gravatar image
8 yorumdan 5 tanesi gösteriliyor hepsini göster
ekleyen=guncelleyen=kullanicilar.getId();
eklemeTarihi = guncellemeTarihi = new Date();

ekleyen=kullanicilar.getId();
eklemeTarihi = new Date();
guncelleyen=kullanicilar.getId();
guncellemeTarihi = new Date();

şeklinde yazarak dene.

permanent link

cevaplandı: 04 Haz '14, 07:49

SaRPaRDa's gravatar image

SaRPaRDa
5.0k213165
cevap kabul oranı: 27%

Zaten öyle yapıyorum ama bir değişiklik olmadı!!

(04 Haz '14, 13:00) kurtomerfaruk kurtomerfaruk's gravatar image
Cevabınız
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:

×1,079
×281
×86
×19
×1

Soruldu: 02 Haz '14, 16:15

Görüntüleme: 962 kez

Son güncelleme: 05 Haz '14, 14:19

powered by BitNami OSQA