[英]JPA Join table with SELECT
我有这样的SQL查询:
SELECT h.name, h.created_date, tbl.*
FROM my_table tbl
LEFT JOIN
(SELECT name, max(created_date) created_date FROM my_table GROUP BY name) h
ON tbl.name = h.name;
它返回my_table(其中有多个名为=“”)的行以及该名称的最大created_date。
有没有办法在JPQL查询中复制它?
这是Entity类的要点,它非常简单:
@Entity
@Table(name = "MY_TABLE")
@XmlRootElement
public class MyTable implements Serializable {
private BigDecimal tableId;
private String name;
private Date createdDate;
// ...
@Id
@Basic(optional = false)
@Column(name = "TABLE_ID")
@GeneratedValue(generator = "TBL_ID_SEQ")
public BigDecimal getTableId() {
return tableId;
}
@Basic(optional = false)
@Column(name = "NAME")
public String getName() {
return name;
}
@Basic(optional = false)
@Column(name = "CREATED_DATE", insertable = false)
@Temporal(TemporalType.TIMESTAMP)
public Date getCreatedDate() {
return createdDate;
}
// ... getters/setters
}
只是阅读你的问题,我想你不需要另一个实体。 JPA中的实体与SQL中的表相同。 通常,实体和表之间存在1:1的关系。 您只需要知道如何使用JPQ调用查询。 您需要一个实体管理器,它可以调用您的语句。
EntityManagerFactory emf = Persistence.createEntityManagerFactory("PersistenceUnit"); EntityManager em = emf.createEntityManager();
您必须定义持久性单元,即在pom文件或config java文件中。 所以你可以继续这样的编码:
Query q = em.createQuery( "Your query in sql syntax as a string object" );
对于您的实体和调用的查询,您将收到一个List使用
List<object> resultOfMyQuery = q.getResultList();
这只是一个简短的例子。 但希望你有一些流行语要找;)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.