我正在尝试使用 Hibernate 连接到数据库。当前表格具有以下布局:

(field1, field2, field3, optional1, optional2...) 

其中 field1、field2、field3 都是外键,它们一起组成一个组合键。

我有以下类(class):

@Entity 
@Table(name = "db_table_mainRecords") 
public class MainRecord implements Serializable{ 
    @EmbeddedId 
    private MainRecordKey   lqk; 
    @Transient 
    private String          field1; 
    @Transient 
    private int         field2; 
    @Transient 
    private int         field3; 
    @Column(name = "optional_1") 
    private double          optional1; 
    @Column(name = "optional_2") 
    private double          optional2; 
 
.... 
  // Getters and setters for all fields, including fields within MainClassKey 
.... 
} 

伴随着它:

@Embeddable 
@Table(name = "db_table_mainRecords") 
public class MainRecordKey implements Serializable{ 
    @Column(name = "field1") 
    private String field_1;  
    @Column(name = "field_2") 
    private int field2; 
    @Column(name = "field_3") 
    private int field3; 
} 

我收到以下错误:

org.hibernate.QueryException - could not resolve property: field3 of: path.MainRecord at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:67)

这是我的 Bo/dao 代码:

public List<MainRecord> getMainRecords(int e){ 
    Criterion crit1 = Restrictions.eq("field3", e); 
    ArrayList<MainRecord> list = (ArrayList<MainRecord>) dao.getMainRecords(crit1); 
} 
 
 
public List<MainRecord> getMainRecords(Criterion criteria){ 
    if(criteria == null) 
        return new ArrayList<MainReocrd>(); 
    return (List<MainRecord>) getHibernateTemplate().findByCriteria(DetachedCriteria.forClass(MainRecord.class).add(criteria)); 
} 

请您参考如下方法:

尝试将映射文件 MainRecord 中的所有 int 更改为 Integer 并将 double 更改为 Double MainRecordKey

更新 试试这个:

Restrictions.eq("lqk.field3", e); 


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!