2013-03-20 87 views
0

我有我想与JPA找不到实体

CREATE TABLE translations (
id SERIAL NOT NULL, 
KEY VARCHAR(255), 
LANGUAGE VARCHAR(255), 
TRANSLATION VARCHAR(255) 
) 

使用我创造了这个实体此数据表:

@Entity 
@Table(name = "translations") 
public class TranslationTestEntitie extends AbstractEntityWithId { 

    private static final long serialVersionUID = 2029240552230401080L; 

    @Column(name = "id", insertable=false, updatable=false) 
    private long id; 
    @Column(name = "key", insertable=false, updatable=false) 
    private String key; 
    @Column(name = "language", insertable=false, updatable=false) 

    private String language; 
    @Column(name = "translation", insertable=false, updatable=false) 
    private String translation; 

    public TranslationTestEntitie() { 
    } 

    // Getters and setters 
    public Long getId() { 
     return id; 
    } 

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

    public String getKey() { 
     return key; 
    } 

    public void setKey(String key) { 
     this.key = key; 
    } 

    public String getLanguage() { 
     return language; 
    } 

    public void setLanguage(String language) { 
     this.language = language; 
    } 

    public String getTranslation() { 
     return translation; 
    } 

    public void setTranslation(String translation) { 
     this.translation = translation; 
    } 

} 

当我试图让这个查询SELECT c FROM Translations c WHERE c.Id = 70

我得到这个消息The abstract schema type 'Translations' is unknown.

这个权利根据t数据库表。

P.S这是我用它来获取数据的代码:

public TData td; 

    public class TData { 

     private long id; 
     private String key; 
     private String language; 
     private String translation; 

     public TData() { 
     }; 

     public TData(long id, String key, String language, String translation) { 
      // super(); 
      this.id = id; 
      this.key = key; 
      this.language = language; 
      this.translation = translation; 
     } 

     public long getId() { 
      return id; 
     } 

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

     public String getKey() { 
      return key; 
     } 

     public void setKey(String key) { 
      this.key = key; 
     } 

     public String getLanguage() { 
      return language; 
     } 

     public void setLanguage(String language) { 
      this.language = language; 
     } 

     public String getTranslation() { 
      return translation; 
     } 

     public void setTranslation(String translation) { 
      this.translation = translation; 
     } 

    } 

    public TData getDataObj() { 
     return td; 
    } 

    @PostConstruct 
    public void loadData() { 

     td = new TData(); 

     String query = "SELECT c FROM Translations c WHERE c.id = 70"; 
     td = (TData) dao.jpqlQuerySingle(query);//(query);//jpqlQuery(query); 

    } 

但是我还是空的对象。

+0

您是否已经手动创建了该实体?为什么不使用netbeans/eclipse来使用数据库表结构来生成这个? – pepuch 2013-03-20 10:28:51

+1

你如何尝试查询?如何注册您的实体类型? – 2013-03-20 10:29:02

+0

你可以发布请求数据库的代码吗? – benzonico 2013-03-20 10:29:17

回答

1

也许是因为你的表名不是Translations而是translations

SELECT c FROM translations c WHERE c.id = 70 

和小写的id。

+0

但是这是JPQL,所以它应该是实体名称而不是表名,按照JPA规范 – DataNucleus 2013-03-20 11:59:29

2

映射到您的translations数据库表的实体被命名为TranslationTestEntitie

from TranslationTestEntitie c应该适合您的需求。