【问题标题】:Hibernate - Restriction between()休眠 - 之间的限制()
【发布时间】:2014-11-10 06:33:14
【问题描述】:
 Criteria cr=session.createCriteria(Student.class).add(Restrictions.between("strStudentMark1", "90", "100"));

在上面的代码 sn-p 中,我给出了 90 到 100 之间的分数。在 Student 表中,有 90 到 100 之间的字段。但在输出中没有得到这些字段。

可能是什么问题?我有什么错误吗?

编辑

是的,当我跑步时,我会得到整个列表。

Criteria cr=session.createCriteria(Student.class);

学生实体在下方,带有生成的 Getter 和 Setter。

import java.io.Serializable;

public class Student implements Serializable {

private String strStudentID;
private String strStudentRegNO;
private String strStudentName;
private String strStudentMark1;
private String strStudentMark2;
private String strStudentDegree;
private String strStudentMobileNO;
private String strStudentMailID;
private String strSalary;


public String getStrSalary() {
    return strSalary;
}
public void setStrSalary(String strSalary) {
    this.strSalary = strSalary;
}
public String getStrStudentID() {
    return strStudentID;
}
public void setStrStudentID(String strStudentID) {
    this.strStudentID = strStudentID;
}
public String getStrStudentRegNO() {
    return strStudentRegNO;
}
public void setStrStudentRegNO(String strStudentRegNO) {
    this.strStudentRegNO = strStudentRegNO;
}
public String getStrStudentName() {
    return strStudentName;
}
public void setStrStudentName(String strStudentName) {
    this.strStudentName = strStudentName;
}
public String getStrStudentMark1() {
    return strStudentMark1;
}
public void setStrStudentMark1(String strStudentMark1) {
    this.strStudentMark1 = strStudentMark1;
}
public String getStrStudentMark2() {
    return strStudentMark2;
}
public void setStrStudentMark2(String strStudentMark2) {
    this.strStudentMark2 = strStudentMark2;
}
public String getStrStudentDegree() {
    return strStudentDegree;
}
public void setStrStudentDegree(String strStudentDegree) {
    this.strStudentDegree = strStudentDegree;
}
public String getStrStudentMobileNO() {
    return strStudentMobileNO;
}
public void setStrStudentMobileNO(String strStudentMobileNO) {
    this.strStudentMobileNO = strStudentMobileNO;
}
public String getStrStudentMailID() {
    return strStudentMailID;
}
public void setStrStudentMailID(String strStudentMailID) {
    this.strStudentMailID = strStudentMailID;
}


}

hibernate.cfg.xml.

<!DOCTYPE hibernate-configuration PUBLIC 
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>

    <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
    <property name="connection.url">jdbc:oracle:thin:@aaaa:bbbb</property>
    <property name="connection.username">xxx</property>
    <property name="connection.password">yyy</property>
    <!-- <property name="connection.pool_size">5</property> -->

       <!-- SQL dialect -->
    <property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
        <!-- Echo all executed SQL to stdout -->

    <property name="show_sql">true</property>
    <property name="current_session_context_class">thread</property>

    <!-- <property name="hbm2ddl.auto">update</property> -->

    <mapping resource="com/hibresources/Student.hbm.xml"/>
</session-factory>
</hibernate-configuration>

学生.hbm.xml.

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 17 Dec, 2010 5:54:42 AM by Hibernate Tools 3.3.0.GA -->
<hibernate-mapping>
<class name="com.bean.Student" table="STUDENT">
    <meta attribute="class-description">
        This class has details abt Students
    </meta>
    <id name="strStudentID" >
        <column name="STUID" />
    </id>
    <property name="strStudentRegNO"  >
        <column name="STUREG_NO" />
    </property>
    <property name="strStudentName" >
        <column name="STUNAME" />
    </property>
    <property name="strStudentMark1" >
        <column name="STUMARK1" />
    </property>

    <property name="strStudentMark2" >
        <column name="STUMARK2" />
    </property>
    <property name="strStudentDegree" >
        <column name="DEGREE" />
    </property>

    <property name="strStudentMobileNO" >
        <column name="MOBILENO" />
    </property>

    <property name="strStudentMailID" >
        <column name="MAILID" />
    </property>

    <property name="strSalary" >
        <column name="SALARY" />
    </property>

</class>
</hibernate-mapping>

【问题讨论】:

  • 您没有将标记存储为字符串?
  • 在 bean 中,我将标记声明为 'String',在 Database 中我将标记存储为 'Varchar2'
  • 当您不添加strStudentMark1 Restrictions 时会发生什么,您得到的是整个列表还是什么。以及你如何定义你的学生实体,你是否也可以提供你的休眠配置

标签: java hibernate hibernate-criteria restriction


【解决方案1】:

请确保存储在数据库中的数据是 INT。之间仅适用于 INT 数据类型。也可以尝试在代码中将值作为 int 传递。

【讨论】:

  • 是的,你是对的。当我将 DB 中的数据类型更改为 NUMBER 时,它起作用了。但是我们需要从应用程序中传递字符串。无论如何,非常感谢....
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-13
  • 2013-03-14
  • 1970-01-01
  • 2016-07-31
  • 1970-01-01
  • 2011-07-03
相关资源
最近更新 更多