【问题标题】:Is it possible to use HQL for Non-Mapped Entities是否可以将 HQL 用于非映射实体
【发布时间】:2017-06-02 19:26:54
【问题描述】:

搜索堆栈溢出后我来到了这个
Can I use hibernate query language for entities not mapped to a table? 但最近我正在制作一个小项目,其中两个实体没有被任何映射注释映射,但我仍然得到了查询的结果。 所以我很困惑,因为帖子说无法查询非映射实体。

客户

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();
      }



}

订单详情

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();
    }

【问题讨论】:

  • 我认为您对休眠映射和SQL映射感到困惑。由于您的实体类使用@Entity 注释,因此它们被映射。这也可以使用 xml 文件来完成。通过映射您的意思是一对一或任何其他关联。这可以通过注释或 xml 添加所需的配置来完成。

标签: java entity-framework hibernate


【解决方案1】:

我觉得你很困惑。 @Entity 是 HQL 用来识别所谓的映射实体的注解。这两个实体都由它们注释。

【讨论】:

    猜你喜欢
    • 2013-11-13
    • 2011-09-28
    • 2013-08-19
    • 2023-03-25
    • 2013-10-09
    • 2021-04-27
    • 1970-01-01
    • 2020-07-28
    相关资源
    最近更新 更多