Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate复合密钥不工作_Java_Database_Hibernate - Fatal编程技术网

Java Hibernate复合密钥不工作

Java Hibernate复合密钥不工作,java,database,hibernate,Java,Database,Hibernate,以下是我正在使用的代码: 数据库: CREATE TABLE IF NOT EXISTS `btech_faculty_assigned` ( `subject_id` varchar(8) NOT NULL, `year` varchar(4) NOT NULL, `section` varchar(1) NOT NULL, `branch` varchar(10) NOT NULL, `semister` varchar(1) N

以下是我正在使用的代码:

数据库:

 CREATE TABLE IF NOT EXISTS `btech_faculty_assigned` (
      `subject_id` varchar(8) NOT NULL,
      `year` varchar(4) NOT NULL,
      `section` varchar(1) NOT NULL,
      `branch` varchar(10) NOT NULL,
      `semister` varchar(1) NOT NULL,
      `FID` varchar(10) NOT NULL,
      `islab` varchar(1) NOT NULL,
      PRIMARY KEY (`subject_id`,`year`,`section`,`branch`,`semister`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
hbm文件:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
<class name="com.att_marks.students.BtechFacultyAssigned" table="btech_faculty_assigned">
<composite-id>
<key-property name="subjectID" column="subject_id"/>
<key-property name="year" column="year"/>
<key-property name="section" column="section"/>
<key-property name="branch" column="branch"/>
<key-property name="semister" column="semister"/>
</composite-id>

<property name="FID" column="FID"></property>
<property name="islab" column="islab"></property>
</class>
</hibernate-mapping>
只要配置文件中不包含此hbm文件,整个项目就可以正常工作。当此文件包含在配置文件中时,
sessionFactory.createQuery(query)
文件抛出空指针异常。

所述:

可以创建具有复合键的表 映射到的多个属性 类作为标识符属性。这个 元素接受 属性映射和 子映射 元素

持久类必须重写 要实现的是equals()和hashCode() 复合标识符相等。它必须 同时实现可序列化。


即使这可能不是问题的原因(但行为看起来像),您也必须遵循此要求,添加
equals
hashcode
serilizable

或显示hibernate启动/解析配置时出现问题的任何日志文件。
package com.att_marks.students;

public class BtechFacultyAssigned {
    private String subjectID;
    public String getSubjectID() {
        return subjectID;
    }
    public void setSubjectID(String subjectID) {
        this.subjectID = subjectID;
    }
    public String getYear() {
        return year;
    }
    public void setYear(String year) {
        this.year = year;
    }
    public String getSeciton() {
        return section;
    }
    public void setSeciton(String section) {
        this.section = section;
    }
    public String getFID() {
        return FID;
    }
    public void setFID(String fID) {
        FID = fID;
    }
    public String getSemister() {
        return semister;
    }
    public void setSemister(String semister) {
        this.semister = semister;
    }
    public String getBranch() {
        return branch;
    }
    public void setBranch(String branch) {
        this.branch = branch;
    }
    public String getIslab() {
        return islab;
    }
    public void setIslab(String islab) {
        this.islab = islab;
    }
    private String year;
    private String section;
    private String FID;
    private String semister;
    private String branch;
    private String islab;

}