2017-01-18 6 views
0

Nach Stapelüberlauf-suche ich
Can I use hibernate query language for entities not mapped to a table? dieser kam aber vor kurzem war ich ein kleines Projekt zu machen, wo die beiden Einheiten nicht durch Mapped Anmerkungen zugeordnet wurden, und ich habe immer noch die Ergebnis für die Abfrage. Also ich bin verwirrt, wie die Beiträge sagen, dass es nicht möglich ist, auf Non-Mapped Entities abzufragen.Ist es möglich, HQL für Nicht-Mapped Entities zu verwenden

Kunden

package com.mayank.bitmesra.pojo; 

import java.util.Date; 

import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.PrePersist; 
import javax.persistence.PreUpdate; 
import javax.persistence.Temporal; 
import javax.persistence.TemporalType; 

@Entity 
public class Customer { 


    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    private Long id; 

    private String customerId; 

    private String name; 

    private String phoneNumber; 

    @Temporal(TemporalType.DATE) 
    private Date dateOfBirth; 

    @Temporal(TemporalType.DATE) 
    private Date createdDate; 

    //for rolling back of Data 
    //using date as such of now 
    @Temporal(TemporalType.DATE) 
    private Date updatedOn; 


    //for picking up only the data that is most recent 
    //like a customer can have save with same customer id 
    //but has different address as his address might have changed up in near future 
    //will try to handle this in near future 
/* @Temporal 
    private Date lastPickedUpDate;*/ 


    public String getCustomerId() { 
     return customerId; 
    } 

    public void setCustomerId(String customerId) { 
     this.customerId = customerId; 
    } 

    public Date getDateOfBirth() { 
     return dateOfBirth; 
    } 

    public void setDateOfBirth(Date dateOfBirth) { 
     this.dateOfBirth = dateOfBirth; 
    } 

    public String getName() { 
     return name; 
    } 

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

    public String getPhoneNumber() { 
     return phoneNumber; 
    } 

    public Long getId() { 
     return id; 
    } 

    public void setId(Long id) { 
     this.id = id; 
    } 

    public void setPhoneNumber(String phoneNumber) { 
     this.phoneNumber = phoneNumber; 
    } 

    @Override 
    public String toString() { 
     return "Customer [id=" + id + ", name=" + name + ", phoneNumber=" + phoneNumber + "]"; 
    } 

    public Date getUpdatedOn() { 
     return updatedOn; 
    } 

    public void setUpdatedOn(Date updatedOn) { 
     this.updatedOn = updatedOn; 
    } 

    @PrePersist 
     protected void onCreate() { 
     createdDate = new Date(); 
     } 

    @PreUpdate 
     protected void onUpdate() { 
     updatedOn = new Date(); 
     } 



} 

Orderdetails

package com.mayank.bitmesra.pojo; 

import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 

@Entity 
public class OrderDetails { 
    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    private long id; 

    private String customerId; 

    private String orderId; 

    private String orderName; 

    public String getCustomerId() { 
     return customerId; 
    } 

    public void setCustomerId(String customerId) { 
     this.customerId = customerId; 
    } 

    public String getOrderId() { 
     return orderId; 
    } 

    public void setOrderId(String orderId) { 
     this.orderId = orderId; 
    } 

    public String getOrderName() { 
     return orderName; 
    } 

    public void setOrderName(String orderName) { 
     this.orderName = orderName; 
    } 


} 

OrderDetailsDAOImpl

@Repository 
@Transactional 
public class OrderDetailsDAOImpl implements OrderDetailsDAO{ 

    @PersistenceContext 
    EntityManager entityManager; 


    @Override 
    public List getAllOrderDetails() { 
//  return entityManager.createQuery("Select order from OrderDetails order ").getResultList(); 
    return entityManager.createQuery("Select customer.name from OrderDetails order inner join Customer customer on order.customerId=customer.customerId").getResultList(); 
    } 
+0

Ich denke, Sie sind verwirrt zwischen Hibernate Mapping und SQL Mapping. Da Ihre Entitätsklassen mit @Entity annotiert sind, werden sie zugeordnet. Dies kann auch mithilfe von XML-Dateien erfolgen. Mit dem Mapping meinen Sie eins zu eins oder eine andere Assoziation. Dies kann durch Hinzufügen der erforderlichen Konfiguration entweder durch Anmerkungen oder XML erfolgen. – sAm

Antwort

1

Ich glaube, Sie sind verwirrt. @Entity ist die Anmerkung, die von HQL verwendet wird, um die so genannten zugeordneten Entitäten zu identifizieren. Beide Entitäten werden von ihnen kommentiert.

Verwandte Themen