0

私は Hibernate に取り組んでおり、2 つの抽象クラスが必要です。最初のものProductはメインのものであり、という名前のデータベースにテーブルがあってはなりませんproduct。2 番目の抽象クラスはComPart(から継承Product) であり、gpu や cpu などの一部のコンピューター部分はこのクラスから継承されます。名前が付けられたテーブルは 1 つだけcom_partで、CPU と GPU の両方がこのテーブルにある必要があります (階層ごとのテーブル)。

@MappedSuperclass
public abstract class Product{

    private long pID;
    protected String manufacturer;

    @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = "PID", unique = true, nullable = false)
    public int getPID() {
        return pID;
    }

    @Column(name = "Manufacturer")
    public String getManufacturer() {
        return manufacturer;
    }

}


// computer part abstract class inherited from Product
@Entity
@Table(name = "com_part")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(
    name="disc",
    discriminatorType=DiscriminatorType.STRING
)
@AttributeOverrides({
    @AttributeOverride(name="manufacturer", column=@Column(name="Manufacturer"))
})
public abstract class ComPart extends Product {

    private String platform;

    @Column(name = "PLATFORM", length = 10)
    public String getPlatform() {
        return platform;
    }
}


// Various computer hardwares inherited from ComPart
@Entity
@Table(name="com_part")
@DiscriminatorValue("CPU")
public class Processor extends comPart {
    private String socketType;
    private String chipset;

    //getters setters...
}

@Entity
@Table(name="com_part")
@DiscriminatorValue("GPU")
public class GraphicsCard extends comPart {
    private double memory;

    //getters setters...
}

これらすべての機能をどのようにマッピングできますか? 上記のコードでは、sessionfactory を作成することさえできません?! 次のエラーが生成されます。

Failed to create sessionFactory object.java.lang.NullPointerException
Exception in thread "main" java.lang.ExceptionInInitializerError
    at com.bts.core.hb.HibernateUtil.<clinit>(HibernateUtil.java:35)

Caused by: java.lang.NullPointerException
    at org.hibernate.cfg.Configuration.processFkSecondPassInOrder(Configuration.java:1424)
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1351)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1733)
    at com.bts.core.hb.HibernateUtil.<clinit>(HibernateUtil.java:32)
4

0 に答える 0