当前位置: 首页 > 知识库问答 >
问题:

Hibernate PropertyAccessException:调用getter时发生IllegalArgumentException?怎么搞的?

羊毅庵
2023-03-14

private void categoryComboBoxActionPerformed(java.awt.event.ActionEvent evt) {                                                 
                try {
        DefaultTableModel dtm = new DefaultTableModel();
        String cat = this.categoryComboBox.getSelectedItem().toString();
        session=sessionFactory.openSession();
        transaction = session.beginTransaction();
        Criteria criteria = session.createCriteria(Items.class);
//HERE LIES THE PROBLEM BUT I HAVE NO CLUE HOW TO SOLVE IT
        List<Items> itemlist = criteria.add(Restrictions.eq("category", cat).ignoreCase()).list();
        transaction.commit();
        session.close();

            if (dtm.getColumnCount()==0) {
            dtm.addColumn("Name");
            dtm.addColumn("Category");
            dtm.addColumn("Quantity");
            dtm.addColumn("Net Price (per unit)");
            dtm.addColumn("Gross Pice (per unit)");
            dtm.addColumn("Net Price (total)");
            dtm.addColumn("Gross Price (total)");
            }
            Font f = new Font("Georgia", Font.BOLD, 16);      
            JTableHeader header = itemTable.getTableHeader();
            header.setFont(f);
            itemTable.setRowHeight(25);

            if (getQuantity().isEmpty()) {for (int i = 0; i < itemlist.size(); i++) {
                     dtm.addRow(new Object[]{itemlist.get(i).getName(), itemlist.get(i).getCategory().getName(),"-",itemlist.get(i).getNetPrice(), Math.round((Double.valueOf(itemlist.get(i).getNetPrice())*(1d+itemlist.get(i).getVatRate()/100d))), "-", "-"});
                }

            } else {
                for (int i = 0; i < itemlist.size(); i++) {
                    dtm.addRow(new Object[]{itemlist.get(i).getName(), itemlist.get(i).getCategory().getName(), getQuantity().get(itemlist.get(i).getItemId()).getQuantity(), itemlist.get(i).getNetPrice(), itemlist.get(i).getNetPrice()*(itemlist.get(i).getVatRate()+1), getQuantity().get(itemlist.get(i).getItemId()).getQuantity()*itemlist.get(i).getNetPrice(), itemlist.get(i).getNetPrice()*(itemlist.get(i).getVatRate()+1)*getQuantity().get(itemlist.get(i).getItemId()).getQuantity()});
                }

            }

          this.itemTable.setModel(dtm);} catch (Exception e) {
         JOptionPane.showMessageDialog(null, e.getMessage()); 
         e.printStackTrace();
    }
} 

这里还有我的XML映射类:

Caregories.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- Generated Feb 9, 2019, 3:57:52 PM by Hibernate Tools 4.3.1 -->
<hibernate-mapping>
    <class name="classes.Categories" table="CATEGORIES" schema="APP" optimistic-lock="version">
        <id name="categoryId" type="int">
            <column name="CATEGORY_ID" />
            <generator class="native" />
        </id>
        <property name="name" type="string">
            <column name="NAME" length="100" />
        </property>
     <set name="items" table="ITEMS" inverse="false" cascade="all" lazy="false" fetch="select">
        <key>
            <column name="CATEGORY_ID" not-null="true" />
        </key>
        <one-to-many class="classes.Items" />
    </set>
    </class>
</hibernate-mapping>

项目。hbm。xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="classes.Items" table="ITEMS" schema="APP" optimistic-lock="version">
        <id name="itemId" type="int" column="ITEM_ID">
            <generator class="native" />
        </id>
        <property name="name" type="string" column="NAME" length="100"/>
        <property name="netPrice" type="java.lang.Integer" column="NET_PRICE"/>
        <property name="vatRate" type="java.lang.Integer" column="VAT_RATE"/>
        <many-to-one name="category" class="classes.Categories" fetch="select" column="CATEGORY_ID" not-null="true" lazy="false"/>
    </class>
</hibernate-mapping>

类别。Java语言

package classes;
// Generated Feb 9, 2019, 3:57:50 PM by Hibernate Tools 4.3.1

import java.util.Set;

public class Categories  implements java.io.Serializable {


     private int categoryId;
     private String name;
     private Set<Items> items;

    public Categories() {
    }

    public Categories(int categoryId, String name, Set<Items> items) {
        this.categoryId = categoryId;
        this.name = name;
        this.items = items;
    }  


    public int getCategoryId() {
        return this.categoryId;
    }

    public void setCategoryId(int categoryId) {
        this.categoryId = categoryId;
    }
    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Set<Items> getItems() {
        return items;
    }

    public void setItems(Set<Items> items) {
        this.items = items;
    }


}

项目。Java语言

package classes;

public class Items  implements java.io.Serializable {


     private int itemId;
     private String name;
     private Integer netPrice;
     private Integer vatRate;
     private Categories category;

    public Items() {
    }

    public Items(int itemId, String name, Integer netPrice, Integer vatRate, Categories category) {
        this.itemId = itemId;
        this.name = name;
        this.netPrice = netPrice;
        this.vatRate = vatRate;
        this.category = category;
    }

    public int getItemId() {
        return this.itemId;
    }

    public void setItemId(int itemId) {
        this.itemId = itemId;
    }
    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getNetPrice() {
        return this.netPrice;
    }

    public void setNetPrice(Integer netPrice) {
        this.netPrice = netPrice;
    }
    public Integer getVatRate() {
        return this.vatRate;
    }

    public void setVatRate(Integer vatRate) {
        this.vatRate = vatRate;
    }

    public Categories getCategory() {
        return category;
    }

    public void setCategory(Categories category) {
        this.category = category;
    }


}

共有1个答案

孙永思
2023-03-14

<代码>标准。添加(限制。eq(“类别”,类别)。ignoreCase())这是错误的。不能将关系与字符串进行比较。下面是一个直接来自Hibernate文档的示例:

List<Items> itemlist = sess.createCriteria(Items.class)      
    .createAlias("category",c)
        .add( Restrictions.eq("c.name", cat))
    .list();

https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querycriteria.html

另一个观察是您使用的是inverse=false。IMO您希望它是inverse=true

 类似资料:
  • 问题内容: 尝试从数据库中列出带有简单约束的hibernate条件时出现错误 我有两个类:与关联。这两个类正在扩展,用于管理有关数据版本的信息-(创建和分配,谁和何时)。这两个类具有的重要意义。 执照 健身房 数据模型 的MySQL 例外: 我做错了什么? 问题答案: 尝试使用 也就是说,您将代替放置为第二个参数。

  • 我有一个fxml文件已经注册了控制器。Controller实现EventHandler和方法句柄(ActionEvente)。如果发生注册事件,处理程序方法中的代码将被处理,但不总是这样。但是打印了以下异常跟踪。我错过了什么吗?

  • 问题内容: 当我的程序尝试从数据库中按名称加载用户时,如何解决Hibernate 偶尔引发的异常的原因? 我将表中的列错误地映射到类而不是其他某种整数类型吗?请注意,同一应用程序将其他表中的列映射到对象,但是当用来自这些表的行填充对象时,Hibernate 不会 引发此异常。 进一步注意到,该方案使 RMI缓存复制 的 唯一用户缓存 。此异常可能与缓存复制有关吗?它是Ehcache还是Hibern

  • 问题内容: 我想这是某种依赖性问题,所以这是我的树: 从我发现的情况来看,Spring 4.1.1应该可以与javax.servlet 3.1.0一起使用,但是 我 在调用response.getStatus( ) 时遇到了 java.lang.NoSuchMethodError:javax.servlet.http.HttpServletResponse.getStatus() )放在我的拦截器

  • 下面数据格式有什么比较优雅的转换方式吗? 请各位大佬解惑

  • 问题内容: 我无法想象自己对此有一个很好的答案,所以我想到了在这里提问。在我看来,我一直想知道如果我的 MySQL 表中的列用完了会怎样? 举例来说,我有一个包含两列的表。的 ID ()和 DESC ()。我当然知道很多,但是可以达到极限。如何处理场景,其中 的情况下, 该 ID 达到它的极限?我需要其他服务器吗?如果可以,该如何同步呢?这是正确的方法吗?任何有识之士的朋友。 问题答案: 它不会用