Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.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 未在指定列中插入数据_Java_Hibernate - Fatal编程技术网

Java 未在指定列中插入数据

Java 未在指定列中插入数据,java,hibernate,Java,Hibernate,嗨,我有一个类车辆是父类,两轮车和四轮车是扩展父类的子类。 问题是,当我将数据插入数据库中的rto(id、名称、车辆类型、steeringHandle、steeringWheel)表时,它将为TwoWheeler插入指定的数据,但对于FourWheeler,它将为父类中存在的方法插入数据,但当我从子类(FourWheeler(setsteeringWheel))调用方法时它没有更新中的指定数据 方向盘列。我正在添加表格的屏幕截图。 车辆等级 ` 两轮车级 四轮车级 映射文件

嗨,我有一个类车辆是父类,两轮车和四轮车是扩展父类的子类。
问题是,当我将数据插入数据库中的rto(id、名称、车辆类型、steeringHandle、steeringWheel)表时,它将为TwoWheeler插入指定的数据,但对于FourWheeler,它将为父类中存在的方法插入数据,但当我从子类(FourWheeler(setsteeringWheel))调用方法时它没有更新中的指定数据 方向盘列。我正在添加表格的屏幕截图。

车辆等级 `



两轮车级



四轮车级



映射文件


添加我的数据库scrrenshot



四轮车级


我想你的问题在这里

public void setsteeringWheel(String wheel){
    this.steeringWheel= steeringWheel;
}
方法参数是
wheel
,但您正在分配
steeringWheel
的值。(您正在分配
this.steeringWheel=steeringWheel
,这意味着在调用
setsteeringWheel()
之后,它将具有相同的值--
null

问题就在这里

public void setsteeringWheel(String wheel){
        this.steeringWheel= steeringWheel;
    }
您没有使用传递的参数
这个。steeringWheel=控制盘

TwoWheeler似乎使用了
这个。steeringHandle=handle
其中
handle
是(正确的)方法参数的名称。感谢drew的巨大响应,这是我指出的愚蠢错误(y),但是@Stone要知道你的getter和setter没有很好地实现,它们应该遵循命名约定,您使用了
setsteeringWheel()
getsteeringWheel()
,您需要使用和大写作为属性名称的第一个字母,因此它们必须是
setsteeringWheel()
getsteeringWheel()
。请复制是,从现在开始必须遵循
package hibernate_discriminator;


public class FourWheeler extends Vehicle {

    private String steeringWheel;

    public FourWheeler(){

    }

    public void setsteeringWheel(String wheel){
        this.steeringWheel= steeringWheel;
    }

    public String getsteeringWheel(){
        return steeringWheel;
    }


}
 <?xml version="1.0" encoding="UTF-8"?>

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

<hibernate-mapping>
    <class name="hibernate_discriminator.Vehicle" table="rto" discriminator-value="vehicle">
        <id name="id" column="id" type="integer">
            <generator class="increment"></generator>
        </id>

        <discriminator column="vehicle_type" type="string"></discriminator>
        <property name="name" column="name" type="string"></property>

        <subclass name="hibernate_discriminator.TwoWheeler" extends="Vehicle" discriminator-value="Bike">
            <property name="steeringHandle" column="steeringHandle" type="string"></property>
        </subclass>
        <subclass name="hibernate_discriminator.FourWheeler" extends="Vehicle" discriminator-value="Car">
            <property name="steeringWheel" column="steeringWheel" type="string"></property>
        </subclass>
    </class>
</hibernate-mapping>
    <?xml version="1.0" encoding="UTF-8"?>

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

<hibernate-configuration>
    <session-factory>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">ankita</property>
        <property name="hibernate.connection.autocommit">false</property>

        <property name="show_sql">true</property>
        <property name="format_sql">true</property>
        <property name="use_sql_comments">true</property>

        <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>

        <mapping resource="resources/Vehicle.hbm.xml"/>
    </session-factory>
</hibernate-configuration>
   public class Main {
    public static void main(String[] args){
        Configuration cfg= new Configuration();
        cfg.configure("/resources/Config.cfg.xml");
        SessionFactory sf= cfg.buildSessionFactory();
        Session s= sf.openSession();
        Transaction tx= s.beginTransaction();

        Vehicle v= new Vehicle();
        v.setName("Vehicle");

        TwoWheeler tw= new TwoWheeler();
        tw.setName("CBR");
        tw.setsteeringHandle("CBR Handle");

        FourWheeler fw= new FourWheeler();
        fw.setName("Audi A4");
        fw.setsteeringWheel("Audi a7 Wheel");

        s.save(v);
        s.save(tw);
        s.save(fw);
        s.flush();
        tx.commit();
    }
}
   public class Main {
    public static void main(String[] args){
        Configuration cfg= new Configuration();
        cfg.configure("/resources/Config.cfg.xml");
        SessionFactory sf= cfg.buildSessionFactory();
        Session s= sf.openSession();
        Transaction tx= s.beginTransaction();

        Vehicle v= new Vehicle();
        v.setName("Vehicle");

        TwoWheeler tw= new TwoWheeler();
        tw.setName("CBR");
        tw.setsteeringHandle("CBR Handle");

        FourWheeler fw= new FourWheeler();
        fw.setName("Audi A4");
        fw.setsteeringWheel("Audi a7 Wheel");

        s.save(v);
        s.save(tw);
        s.save(fw);
        s.flush();
        tx.commit();
    }
}
public void setsteeringWheel(String wheel){
    this.steeringWheel= steeringWheel;
}
public void setsteeringWheel(String wheel){
        this.steeringWheel= steeringWheel;
    }