2017-01-15 3 views
0

私はyoutube tutorialで示されているクラスごとの継承実装のコードを記述しました。私のコードでは、オブジェクトを保存するStoreData.javaと、親クラスとしてVehicle.java、子クラスとしてTwoWheeler.java、FourWheeler.javaがあります。テーブルクラス継承:null値を取得

StoreData.java

import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import org.hibernate.Transaction; 
import org.hibernate.cfg.AnnotationConfiguration; 

public class StoreData { 
    public static void main(String[] args) { 

     SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory(); 
     Session session = sessionFactory.openSession(); 
     Transaction t = session.beginTransaction(); 

     Vehicle vehicle = new Vehicle(); 
     vehicle.setVehicle_Name("Car"); 

     TwoWheeler twoWheeler = new TwoWheeler(); 
     twoWheeler.setBikeModel("HONDA CBR 250"); 

     FourWheeler fourWheeler = new FourWheeler(); 
     fourWheeler.setFourWheelerModel("HONDA City"); 

     session.save(vehicle); 
     session.save(twoWheeler); 
     session.save(fourWheeler); 

     t.commit(); 
     session.close(); 


    } 
} 

Vehicle.java

import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.Inheritance; 
import javax.persistence.InheritanceType; 
@Entity 
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) 
public class Vehicle { 

    @Id 
    @GeneratedValue(strategy=GenerationType.TABLE) 
    private int vehicle_id; 
    private String Vehicle_Name; 


    public int getVehicle_id() { 
     return vehicle_id; 
    } 
    public void setVehicle_id(int vehicle_id) { 
     this.vehicle_id = vehicle_id; 
    } 
    public String getVehicle_Name() { 
     return Vehicle_Name; 
    } 
    public void setVehicle_Name(String vehicle_Name) { 
     Vehicle_Name = vehicle_Name; 
    } 



} 

TwoWheeler.java

import javax.persistence.Entity; 

@Entity 
public class TwoWheeler extends Vehicle { 
    private String bikeModel; 

    public String getBikeModel() { 
     return bikeModel; 
    } 

    public void setBikeModel(String bikeModel) { 
     this.bikeModel = bikeModel; 
    } 

} 

FourWheeler.java

import javax.persistence.Entity; 

@Entity 
public class FourWheeler extends Vehicle { 
    private String fourWheelerModel; 

    public String getFourWheelerModel() { 
     return fourWheelerModel; 
    } 

    public void setFourWheelerModel(String fourWheelerModel) { 
     this.fourWheelerModel = fourWheelerModel; 
    } 

} 

私はMySqlを使用しており、テーブル内のデータはこのように見えます。 表車種:

 
vehicle_d vehicle_name 
    1   Car 

TwoWheeler表:

 
vehicle_id vehicle_name bikemodel 
2   null  HONDA CBR 250 

FourWheelerテーブル:vehicle_name列内のここ

 
vehicle_id vehicle_name bikemodel 
3   null   HONDA City 

私の代わりに、車のヌル取得しています。私がした間違いは何ですか?伝えてください。

答えて

0

希望すると、これが役立ちます。

変更

private String Vehicle_Name; 

への最初の文字:

private String vehicle_Name; 

することができます。このリンク http://www.java4s.com/hibernate/hibernate-inheritance-table-per-subclass-hierarchy/

+0

この例では、それらはハイバネート設定ファイルを使用していますが、私のコードでは継承のアノテーションを使用しており、私の質問に答えていません。 – sajid

+0

私はどのような注釈を使うべきかわかりませんが、私が間違いなく言っているのは一つのことです。設定ファイルで可能ならば、注釈付きのものでなければなりません。 –

0
あなたの代わりに、上部ケースの下部ケースを使用するようにすべき

を参照してください詳細についてはHow do getters and setters work?

これがあなたを助けることを願っています。

+0

それは私の間違いです。私は変更を加えましたが、メンバ変数名を変更しても問題は解決しませんでした。私はまだtwowheelerテーブルとfourwheelerテーブルでnullのvehicle_nameを取得しています。 – sajid

+0

私はこの問題があると確信しているので、あなたのプログラムをデバッグするだけでOKです –

関連する問題