【问题标题】:EclipseLink error: Exception Description: Missing descriptor for classEclipseLink 错误:异常描述:缺少类的描述符
【发布时间】:2012-02-10 22:50:09
【问题描述】:

我只想用 EclipseLink 做一个简单的本机查询,但我做不到

    @Repository("CarsRepository")
public class JpaCarsRepository {

    @PersistenceContext 
    private EntityManager em;

    public List<Car> getCars(){
     Query q=em.createNativeQuery("SELECT id,name_car FROM CARS",Car.class);
     List<Car> results=q.getResultList();

我的“汽车”类被定义为@Entity。 (我的persistence.xml 只有基本的连接设置)我收到“汽车”类的“缺少描述符”错误。

为什么会这样?我看到了similar question,但对我没有帮助。

第二个问题:

如果我不指定'createNativeQuery'函数(Car.class)的第二个参数,它会返回一个对象列表,所以我可以看到results.get(0)值为[ 1辆车]。我可以遍历对象列表。所以如果

Object o=results.get(0)

我可以手动创建 Car 对象,但我不知道如何获取对象的第一个值,如果我打印 o[0] 以获取对象的值 1(即 [1 car])我得到以下错误表达式的类型必须是数组类型但解析为对象

如何访问对象的每个值?

【问题讨论】:

    标签: java spring jpa persistence eclipselink


    【解决方案1】:

    它不将 Car 视为实体,看起来它没有被扫描。在 persistence.xml 中的类元素中列出您的实体有帮助吗?

    您的第二次尝试返回对象数组列表。要访问值,您必须首先将结果集的一行转换为 Object 数组:

    Object[] o=results.get(0)
    //types below are just guessed:
    Integer id = o[0];
    String name = o[1];
    

    【讨论】:

    • 我之前在persistence.xml中添加了我的实体但没有成功,但重试后我发现我的错误没有在我的汽车模型中指定@Id和@Column(name="columname")类的属性
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多