Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.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
Hibernate:找不到persister:java.math.BigDecimal_Hibernate_Jpa_Guice_Guice Persist - Fatal编程技术网

Hibernate:找不到persister:java.math.BigDecimal

Hibernate:找不到persister:java.math.BigDecimal,hibernate,jpa,guice,guice-persist,Hibernate,Jpa,Guice,Guice Persist,我正在尝试将guice、jpa和hibernate结合起来。hibernate的初始化看起来不错,直到我尝试通过DAO访问映射类。我找到了所有的帮助请求,但我的问题(目前)不是“自定义类”(至少我不这么认为) 总的来说没什么特别的。我得到了persistence.xml,它定义了我的类和其中一个类的基本(persist、findById、remove)DAO public abstract class AbstractDao<E, K> implements Dao<E, K&

我正在尝试将guice、jpa和hibernate结合起来。hibernate的初始化看起来不错,直到我尝试通过DAO访问映射类。我找到了所有的帮助请求,但我的问题(目前)不是“自定义类”(至少我不这么认为)

总的来说没什么特别的。我得到了persistence.xml,它定义了我的类和其中一个类的基本(persist、findById、remove)DAO

public abstract class AbstractDao<E, K> implements Dao<E, K> {

    @Inject
    private EntityManager  manager;
    private final Class<E> entityClass;

    @SuppressWarnings("unchecked")
    public AbstractDao() {
        final ParameterizedType genericSuperclass = (ParameterizedType) this.getClass().getGenericSuperclass();
        this.entityClass = (Class<E>) genericSuperclass.getActualTypeArguments()[1];
    }

    @Override
    public void persist(final E entity) {
        this.manager.persist(entity);
    }

    @Override
    public void remove(final E entity) {
        this.manager.remove(entity);
    }

    @Override
    public E findById(final K id) {
        return this.manager.find(this.entityClass, id);
    }
}
我得到了以下错误(我得到了与java.lang.Long完全相同的错误):

我错过了什么?你需要更多的信息来帮助我吗

编辑#1:我尝试访问的映射类。它是使用Eclipse(最新JEE版本)自动创建的:

编辑#2:使用的DAO类。除泛型的类型定义外,其中没有任何内容:

public class LayerDao extends AbstractDao<Layer, Long> {

}
公共类LayerDao扩展了AbstractDao{
}

我终于发现了错误。在AbtractDao构造函数中,我使用非常常见的代码来确定类类型:

final ParameterizedType genericSuperclass = (ParameterizedType) this.getClass().getGenericSuperclass();
this.entityClass = (Class<E>) genericSuperclass.getActualTypeArguments()[1];
final ParameterizedType genericSuperclass=(ParameterizedType)this.getClass().getGenericSuperclass();
this.entityClass=(类)genericSuperclass.getActualTypeArguments()[1];
仔细观察发现,我试图使用键对象类型genericSuperclass.getActualTypeArguments()[1]而不是实体对象类型genericSuperclass.getActualTypeArguments()[0]

正确的构造函数现在是这样的

  @SuppressWarnings("unchecked")
    public AbstractDao() {
        final ParameterizedType genericSuperclass = (ParameterizedType) this.getClass().getGenericSuperclass();
        this.entityClass = (Class<E>) genericSuperclass.getActualTypeArguments()[0];
    }
@SuppressWarnings(“未选中”)
公开摘要(){
最终参数化类型genericSuperclass=(参数化类型)this.getClass().getGenericSuperclass();
this.entityClass=(类)genericSuperclass.getActualTypeArguments()[0];
}
一切都按预期进行。很抱歉给您带来不便

import java.io.Serializable;
import javax.persistence.*;
import java.math.BigDecimal;
import java.util.Date;


/**
 * The persistent class for the T_M_LAYER_NEU database table.
 * 
 */
@Entity
@Table(name="T_M_LAYER_NEU")
@NamedQuery(name="Layer.findAll", query="SELECT l FROM Layer l")
public class Layer implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @SequenceGenerator(name="T_M_LAYER_NEU_ID_GENERATOR", sequenceName="FIG_SYS_SEQ")
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="T_M_LAYER_NEU_ID_GENERATOR")
    @Column(unique=true, nullable=false, precision=38)
    private long id;

    @Column(nullable=false, precision=1)
    private BigDecimal component;

    @Column(name="DISPLAY_ORDER", nullable=false, precision=3)
    private BigDecimal displayOrder;

    @Column(nullable=false, precision=1)
    private BigDecimal exklusiv;

    @Column(name="GEOMETRIETYP_ID_FK", precision=2)
    private BigDecimal geometrietypIdFk;

    @Temporal(TemporalType.DATE)
    @Column(name="GUELTIG_BIS", nullable=false)
    private Date gueltigBis;

    @Temporal(TemporalType.DATE)
    @Column(name="GUELTIG_VON", nullable=false)
    private Date gueltigVon;

    @Column(nullable=false, precision=1)
    private BigDecimal isactive;

    @Column(nullable=false, precision=1)
    private BigDecimal iskulisse;

    @Column(nullable=false, precision=1)
    private BigDecimal isoverview;

    @Column(name="LAYERTYP_ID_FK", nullable=false, precision=2)
    private BigDecimal layertypIdFk;

    @Column(nullable=false, length=80)
    private String name;

    @Column(name="R_O", nullable=false, precision=1)
    private BigDecimal rO;

    @Column(name="SOURCE_ID", precision=38)
    private BigDecimal sourceId;

    @Column(name="\"SYSTEM\"", nullable=false, precision=1)
    private BigDecimal system;

    @Column(name="USE_COMPLETECACHE", nullable=false, precision=1)
    private BigDecimal useCompletecache;

    @Column(name="XML_DEF", length=100)
    private String xmlDef;

    //bi-directional many-to-one association to Label
    @ManyToOne
    @JoinColumn(name="LABEL_ID_FK")
    private Label label;

    //bi-directional many-to-one association to Symbol
    @ManyToOne
    @JoinColumn(name="SYM_ID_FK")
    private Symbol symbol;

    //bi-directional many-to-one association to Tabellen
    @ManyToOne
    @JoinColumn(name="LAYERDEF_ID_FK")
    private Tabellen table;

    public Layer() {
    }

    public long getId() {
        return this.id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public BigDecimal getComponent() {
        return this.component;
    }

    public void setComponent(BigDecimal component) {
        this.component = component;
    }

    public BigDecimal getDisplayOrder() {
        return this.displayOrder;
    }

    public void setDisplayOrder(BigDecimal displayOrder) {
        this.displayOrder = displayOrder;
    }

    public BigDecimal getExklusiv() {
        return this.exklusiv;
    }

    public void setExklusiv(BigDecimal exklusiv) {
        this.exklusiv = exklusiv;
    }

    public BigDecimal getGeometrietypIdFk() {
        return this.geometrietypIdFk;
    }

    public void setGeometrietypIdFk(BigDecimal geometrietypIdFk) {
        this.geometrietypIdFk = geometrietypIdFk;
    }

    public Date getGueltigBis() {
        return this.gueltigBis;
    }

    public void setGueltigBis(Date gueltigBis) {
        this.gueltigBis = gueltigBis;
    }

    public Date getGueltigVon() {
        return this.gueltigVon;
    }

    public void setGueltigVon(Date gueltigVon) {
        this.gueltigVon = gueltigVon;
    }

    public BigDecimal getIsactive() {
        return this.isactive;
    }

    public void setIsactive(BigDecimal isactive) {
        this.isactive = isactive;
    }

    public BigDecimal getIskulisse() {
        return this.iskulisse;
    }

    public void setIskulisse(BigDecimal iskulisse) {
        this.iskulisse = iskulisse;
    }

    public BigDecimal getIsoverview() {
        return this.isoverview;
    }

    public void setIsoverview(BigDecimal isoverview) {
        this.isoverview = isoverview;
    }

    public BigDecimal getLayertypIdFk() {
        return this.layertypIdFk;
    }

    public void setLayertypIdFk(BigDecimal layertypIdFk) {
        this.layertypIdFk = layertypIdFk;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public BigDecimal getRO() {
        return this.rO;
    }

    public void setRO(BigDecimal rO) {
        this.rO = rO;
    }

    public BigDecimal getSourceId() {
        return this.sourceId;
    }

    public void setSourceId(BigDecimal sourceId) {
        this.sourceId = sourceId;
    }

    public BigDecimal getSystem() {
        return this.system;
    }

    public void setSystem(BigDecimal system) {
        this.system = system;
    }

    public BigDecimal getUseCompletecache() {
        return this.useCompletecache;
    }

    public void setUseCompletecache(BigDecimal useCompletecache) {
        this.useCompletecache = useCompletecache;
    }

    public String getXmlDef() {
        return this.xmlDef;
    }

    public void setXmlDef(String xmlDef) {
        this.xmlDef = xmlDef;
    }

    public Label getLabel() {
        return this.label;
    }

    public void setLabel(Label label) {
        this.label = label;
    }

    public Symbol getSymbol() {
        return this.symbol;
    }

    public void setSymbol(Symbol symbol) {
        this.symbol = symbol;
    }

    public Tabellen getTable() {
        return this.table;
    }

    public void setTable(Tabellen table) {
        this.table = table;
    }
}
public class LayerDao extends AbstractDao<Layer, Long> {

}
final ParameterizedType genericSuperclass = (ParameterizedType) this.getClass().getGenericSuperclass();
this.entityClass = (Class<E>) genericSuperclass.getActualTypeArguments()[1];
  @SuppressWarnings("unchecked")
    public AbstractDao() {
        final ParameterizedType genericSuperclass = (ParameterizedType) this.getClass().getGenericSuperclass();
        this.entityClass = (Class<E>) genericSuperclass.getActualTypeArguments()[0];
    }