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;
}