我正在尝试制作一个基于表格获取数据的组合框。所以我通过在我的数据库中添加一个新表继续我的项目(其他表可以在这里找到:link:
CREATE TABLE IF NOT EXISTS `dat1`.`BILL` (
`BILL_ID` int(4) NOT NULL primary KEY AUTO_INCREMENT,
`BILL_DATE` DATE NOT NULL,
`BILL_ORDER_ID` int(4) NOT NULL,
foreign key (`BILL_ORDER_ID`) references `ORDER`(`ORDER_ID`)
);
我想从order_table获取orders_id(我将我的数据库表重命名为order_table)以填充我的组合框,所以我创建了一个ArrayList:
public ArrayList<Bill> returnBillList()
{
Session session = factory.openSession();
String hql = "FROM Bill";
Query q = session.createQuery(hql);
ArrayList<Bill> billList = new ArrayList(q.list());
return billList;
}
billCheck bill_Check = new billCheck()
ArrayList<Bill> bill = bill_Check.returnBillList();
for (int i=0; i<bill.size(); i++){
jComboBox1.addItem(bill.get(i).getBill_order().getCustomerList().getCustomerList_id());
}
每当我运行我的代码时,我都会得到这个输出:
ERROR: HHH000123: IllegalArgumentException in class: dat3.Bill, setter method of property: bill_order
apr. 24, 2015 8:51:55 PM org.hibernate.property.BasicPropertyAccessor$BasicSetter set
ERROR: HHH000091: Expected type: int, actual value: dat3.Orders_$$_jvst3b6_2
apr. 24, 2015 8:51:55 PM org.hibernate.property.BasicPropertyAccessor$BasicSetter set
ERROR: HHH000123: IllegalArgumentException in class: dat3.Orders, setter method of property: customerList
apr. 24, 2015 8:51:55 PM org.hibernate.property.BasicPropertyAccessor$BasicSetter set
ERROR: HHH000091: Expected type: int, actual value: dat3.MCustomerList_$$_jvst3b6_0
apr. 24, 2015 8:51:55 PM org.hibernate.event.internal.DefaultLoadEventListener onLoad
INFO: HHH000327: Error performing load command : IllegalArgumentException occurred while calling setter for property [dat3.Orders.customerList (expected type = int)]; target = [dat3.Orders@30410a1f], property value = [dat3.MCustomerList@43a0e9ca]
Exception in thread "AWT-EventQueue-0" IllegalArgumentException occurred while calling setter for property [dat3.Orders.customerList (expected type = int)]; target = [dat3.Orders@30410a1f], property value = [dat3.MCustomerList@43a0e9ca]
at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:123)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:713)
at org.hibernate.tuple.entity.PojoEntityTuplizer.setPropertyValues(PojoEntityTuplizer.java:362)
at org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:4712)
at org.hibernate.engine.internal.TwoPhaseLoad.doInitializeEntity(TwoPhaseLoad.java:188)
at org.hibernate.engine.internal.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:144)
at org.hibernate.loader.plan.exec.process.internal.AbstractRowReader.performTwoPhaseLoad(AbstractRowReader.java:244)
at org.hibernate.loader.plan.exec.process.internal.AbstractRowReader.finishUp(AbstractRowReader.java:215)
at org.hibernate.loader.plan.exec.process.internal.ResultSetProcessorImpl.extractResults(ResultSetProcessorImpl.java:140)
at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:138)
at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:102)
at org.hibernate.loader.entity.plan.AbstractLoadPlanBasedEntityLoader.load(AbstractLoadPlanBasedEntityLoader.java:186)
at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:4120)
at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:502)
at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:467)
at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:212)
at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:145)
at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1066)
at org.hibernate.internal.SessionImpl.immediateLoad(SessionImpl.java:972)
at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:173)
at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:285)
at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:185)
at dat3.Orders_$$_jvst3b6_2.toString(Orders_$$_jvst3b6_2.java)
at java.util.Formatter$FormatSpecifier.printString(Formatter.java:2886)
at java.util.Formatter$FormatSpecifier.print(Formatter.java:2763)
at java.util.Formatter.format(Formatter.java:2520)
at java.util.Formatter.format(Formatter.java:2455)
at java.lang.String.format(String.java:2928)
at org.hibernate.PropertySetterAccessException.<init>(PropertySetterAccessException.java:47)
at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:123)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:713)
at org.hibernate.tuple.entity.PojoEntityTuplizer.setPropertyValues(PojoEntityTuplizer.java:362)
at org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:4712)
at org.hibernate.engine.internal.TwoPhaseLoad.doInitializeEntity(TwoPhaseLoad.java:188)
at org.hibernate.engine.internal.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:144)
at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:1114)
at org.hibernate.loader.Loader.processResultSet(Loader.java:972)
at org.hibernate.loader.Loader.doQuery(Loader.java:920)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:354)
at org.hibernate.loader.Loader.doList(Loader.java:2551)
at org.hibernate.loader.Loader.doList(Loader.java:2537)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2367)
at org.hibernate.loader.Loader.list(Loader.java:2362)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:496)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:387)
at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:229)
at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1260)
at org.hibernate.internal.QueryImpl.list(QueryImpl.java:103)
at dat3.billCheck.returnBillList(billCheck.java:77)
at dat3.Bill_form.<init>(Bill_form.java:44)
at dat3.Bill_form$6.run(Bill_form.java:431)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:749)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:702)
at java.awt.EventQueue$3.run(EventQueue.java:696)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:719)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:68)
... 64 more
MCustomerList.java
public class MCustomerList {
private int customerList_id;
private String c_name;
private String c_l_name;
private String c_p_code;
private String c_email;
private String c_phone_nr;
private String c_user_type;
private String c_password;
public MCustomerList(){}
public MCustomerList(String c_name, String c_l_name, String c_p_code, String c_email, String c_phone_nr, String c_user_type, String c_password){
this.c_name = c_name;
this.c_l_name = c_l_name;
this.c_p_code = c_p_code;
this.c_email = c_email;
this.c_phone_nr = c_phone_nr;
this.c_user_type = c_user_type;
this.c_password = c_password;
}
...
...
getters & setters
Orders.java
public class Orders {
private int order_id;
private Date order_date;
private MCustomerList customerList;
private M_Services m_service;
public Orders() {}
public Orders(Date order_date, MCustomerList customerList, M_Services m_service){
this.order_date = order_date;
this.customerList = customerList;
this.m_service = m_service;
}
...
...
getters & setters
Bill.java
public class Bill {
private int bill_id;
private Date bill_date;
private Orders bill_order;
public Bill() {}
public Bill(Date bill_date, Orders bill_order){
this.bill_date = bill_date;
this.bill_order = bill_order;
}
...
...
getters & setters
我很感激任何帮助。
答案 0 :(得分:0)
在hibernate映射中检查数据类型是否与您在数据库中分配的数据类型相符。例如:
<class name="productOffers" table="productOffers">
<id name="product_id" column="ProductID" type="integer">
<generator class="assigned"></generator>
</id>
<property name="offer_id" column="OfferID" type="integer"></property>
</class>
此处为propery类型,它必须与您在数据库中声明的数据类型匹配。