java.lang.NoSuchMethodException : Unknown property 'language' on class 'class java.lang.Class'

标签 java hibernate rest

我收到以下错误:

java.lang.NoSuchMethodException: Unknown property 'language' on class 'class java.lang.Class'

使用的其余调用:/Test/rest/Languages/insertobj/Japan/Swedish%206

我正在使用:org.apache.commons.beanutils.PropertyUtils;

我的语言类中确实有指定的属性“语言”,所以我不确定为什么它会抛出错误。当我这样声明它时它就起作用了:

语言 lanobj = new Lanaguages();

//语言类

public class Languages implements java.io.Serializable {
    private String language;
    private String displayName;

public Languages() {
        this.language = null;
        this.displayName = null;
    }


public Languages(String language, String displayName) {
    this.language = language;
    this.displayName = displayName;
}

public void setLanguageId(Long languageId) {
    this.languageId = languageId;
}

@Column(name = "language", nullable = false, length = 50)
public String getLanguage() {
    return this.language;
}

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

@Column(name = "displayName", nullable = false, length = 50)
public String getDisplayName() {
    return this.displayName;
}

public void setDisplayName(String displayName) {
    this.displayName = displayName;
}

}

///资源管理器代码

@Path("{subResources}/insertobj/{language-id}/{displayname-id}")
//@POST 
@GET // Using get for the sake of making rest call with browser
@Produces(MediaType.TEXT_HTML)
public String getLanguageById(@PathParam("subResources") String id,
                            @PathParam("language-id") String language_id,
                            @PathParam("displayname-id") String displayname_id) 
{
    try{
        Class<?> c = Class.forName("com.test."+id);
        PropertyUtils.setProperty(c, "language",language_id);
        PropertyUtils.setProperty(c, "displayName",displayname_id);
        TransactionManager.createObject(c);     

    }catch (Exception exc){
        exc.printStackTrace();      
    }

}

//TransactionManager 代码片段:

public static void createObject(Object entityObject) {
    Transaction tx = null;
    //SessionFactoryUtil.getInstance().openSession();
    Session session =  SessionFactoryUtil.openSession();
    try {
      tx = session.beginTransaction();        
      session.save(entityObject);         
      tx.commit();
    } 
    catch (RuntimeException e)
    {
      if (tx != null && tx.isActive())
      {
        try 
        {
            // Second try catch as the rollback could fail as well
            tx.rollback();
        } 
        catch (HibernateException e1) {
            //logger.debug(“Error rolling back transaction”);
        }
        // throw again the first exception
        throw e;
      }
    }
    finally
    {
        session.close();
    }
  }

最佳答案

您正在尝试在“com.test.”+id 的 Class 对象上设置属性语言。您需要创建此类的实例来设置该值。像这样的东西:

try{
    Class<?> c = Class.forName("com.test."+id);
    Object o = c.newInstance();
    PropertyUtils.setProperty(o, "language",language_id);
    PropertyUtils.setProperty(o, "displayName",displayname_id);
    TransactionManager.createObject(o);     

}catch (Exception exc){
    exc.printStackTrace();      
}

c 引用的类必须具有零参数构造函数才能使此代码正常工作。

关于java.lang.NoSuchMethodException : Unknown property 'language' on class 'class java.lang.Class' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10901413/

相关文章:

java - 将字符串日期转换为 yyyy-MM-dd 格式以传入 hibernate 条件

java - Spring Security 方法级安全性与 Java 配置 + REST 身份验证?

rest - 查找 API 端点的方法

java - Hibernate @OneToMany 映射给出异常,

带有换行符的 POST 请求的 Java 代码在 Json 正文中发出错误

java - 如何在保持排序的同时将排序的链表插入另一个排序的链表?

java - Android TV Leanback Exoplayer 视频缩放问题

java - 为音乐播放器 Android 应用程序实现随机播放按钮

java - 使用带有 IN 子句的 jooq 条件

hibernate - 当我添加 OneToMany 注释时,EntityManager 无法使用 JPA/Hibernate 进行实例化