2017-04-10 85 views
0

我尝试将我的Mysql查询转换为JPQL,但我不知道哪些工具可以在eclipse上使用而无需编译。MySQL到JPA/JPQL查询

我的记录不告诉我错误在哪里,所以我找不到错误的语法。

这是我的查询:“SELECT COUNT(*)FROM computer c LEFT JOIN company comp ON c.company_id = comp.id where c.name like?”

我想是这样的: “SELECT COUNT(*)FROM计算机C LEFT JOIN公司补偿打开c.company_id = comp.id其中c.name喜欢:过滤器”

但它没有工作。

计算机类:

@Entity 
@Table(name="computer") 
//@NamedQuery(name="computer.rowsWithFilter", query="select count(c.id) from computer c left join company comp on c.company_id = comp.id where c.name like :filter") 
public class Computer { 

    @Id @GeneratedValue 
    private long id; 

    @Column(name="name") 
    private String name; 

    @Column(name="introduced") 
    private LocalDate introduced; 

    @Column(name="discontinued") 
    private LocalDate discontinued; 

    @ManyToOne 
    private Company company; 

公司类:

@Entity @Table(name = “公司”)

public class Company { 

    @Id 
    @GeneratedValue 
    private long id; 

    @Column(name="name") 
    private String name; 

感谢您的帮助!

+0

你可以用'休眠Tools'。请添加您的实体。 –

+0

请检查答案。 – ozgur

+1

如果你不介意......为了让社区知道这个问题已经有了答案... upvote并标记为正确的答案,你认为满足你的期望。 – Dazak

回答

1

试试这个:

SELECT COUNT(c.id) 
FROM computer c 
LEFT JOIN c.company comp 
where c.name like :filter 
+0

为什么JOIN上有ON子句?如果加入一个关系,JPQL –

+0

中不需要ON,那么你是对的@NeilStockton,我会更新我的答案 – Dazak

+3

应该只是“LEFT JOIN c.company comp”并跳过下一行 –