1 beğenilme 0 beğenilmeme
31 kez görüntülendi
Bilgi Teknolojileri kategorisinde tarafından
Entity class içindeki named query nasıl kullanılır ?
    

1 cevap

0 beğenilme 0 beğenilmeme
Bilge (150k puan) tarafından

Temel olarak 3 tip query vardır. 

1- NamedQuery : Entity class içinde generate edilen, o entity ile ilgili ve o entity için özel olarak hazırlanmış sorgulardır. findById, findByName gibi kolon adlarına göre generate edilirler. Kendinizde entity class içine yeni  namedquery ekleyebilirsiniz. Zaten hazır generate edilen birine bakarsanız, nasıl ekleneceğini anlarsınız. Aşağıda entity classın bir kısmı ve onunla ilgili query mevcut.

@Entity
@Table(name = "user")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "User.findAll", query = "SELECT u FROM User u"),
    @NamedQuery(name = "User.findById", query = "SELECT u FROM User u WHERE u.id = :id"),
    @NamedQuery(name = "User.findByFullname", query = "SELECT u FROM User u WHERE u.fullname = :fullname"),
    @NamedQuery(name = "User.findByUsername", query = "SELECT u FROM User u WHERE u.username = :username"),
    @NamedQuery(name = "User.findByPassword", query = "SELECT u FROM User u WHERE u.password = :password"),
    @NamedQuery(name = "User.findByEmail", query = "SELECT u FROM User u WHERE u.email = :email"),
    @NamedQuery(name = "User.findByCompany", query = "SELECT u FROM User u WHERE u.company = :company")})
public class User implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id")
    private Integer id;
 
Örnek ;

// Entity manager objectimizin olduğunu varsayıyoruz.

Query qu = entityManager.createNamedQuery("User.findByUsername", User.class);        
qu.setParameter("username", username);
List<User> result = qu.getResultList();
User us = result.get(0);   // Liste boş ise  hata verir, try catch yapabilirsiniz.
 
2- Native Query;
 
Native query, normal sql sorgunuzu içerir. Geri dönüş tipi bildirmeniz yeterlidir. 
 
Query qu=entityManager.createNativeQuery("SELECT * FROM Users", User.class);
List<User> user=(List<User>) qu.getResultList();
 
 
3- JPQL Query : JPQL ile yazılmış, SQL'e çok benzer sorgulardır.
 
Örnek ;
 
Query qu = entityManager.createQuery("Select e FROM User e WHERE e.username = :username", User.class);
List<User> result = qu.getResultList();
En güncel teknolojiler hakkında yeni şeyler öğren, bilmediklerini sor, bildiklerini paylaş...

Kategoriler

...