休眠:无法确定以下类型:> java.util.List

问题描述 投票:0回答:1

我遇到以下休眠错误,如果有人可以帮助我解决它,我将不胜感激。

org.hibernate.MappingException:无法确定以下类型:java.util.List,在表:Lob处,用于列:[org.hibernate.mapping.Column(approvers)]

我连接两个表的方式存在问题:

@OneToMany(cascade = CascadeType.ALL, targetEntity =     @OneToMany(cascade = CascadeType.ALL, targetEntity = AutoApprovalApproverConfiguration.class, mappedBy = "lob", fetch = FetchType.EAGER)
//@OrderBy("mandateLevelAmount")
private List<AutoApprovalApproverConfiguration> approvers;

更多信息:

数据库:

CREATE TABLE public.lob
(
    lobid bigint NOT NULL,
    name character varying(150) COLLATE pg_catalog."default",
    description character varying(250) COLLATE pg_catalog."default",
    departmentid bigint,
    companyid bigint NOT NULL,
    datedisabled character varying(255) COLLATE pg_catalog."default",
    disabled boolean,
    lastupdated timestamp without time zone,
    CONSTRAINT cc1178706309176 PRIMARY KEY (lobid),
    CONSTRAINT fk12b1f66ea598 FOREIGN KEY (companyid)
        REFERENCES public.merchants (merchant_id) MATCH SIMPLE
        ON UPDATE NO ACTION
        ON DELETE NO ACTION
)

CREATE TABLE public.autoapprovalapproverconfig
(
    id bigint NOT NULL,
    approverid bigint,
    linemanagerid bigint,
    lobid bigint,
    mandatelevelamount numeric(20,2),
    CONSTRAINT autoapprovalapproverconfig_pkey PRIMARY KEY (id),
    CONSTRAINT fkc33597b970049bf4 FOREIGN KEY (linemanagerid)
        REFERENCES public.person (personid) MATCH SIMPLE
        ON UPDATE NO ACTION
        ON DELETE NO ACTION,
    CONSTRAINT fkc33597b99cc58a80 FOREIGN KEY (approverid)
        REFERENCES public.person (personid) MATCH SIMPLE
        ON UPDATE NO ACTION
        ON DELETE NO ACTION
)

实体:

Lob.java

public class Lob implements Serializable
{
    @Id
    @SequenceGenerator(allocationSize = 1, name = "lob_sequence", sequenceName = "lob_ids")
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "lob_sequence")
    private Integer lobid;
    @OneToMany(cascade = CascadeType.ALL, targetEntity = AutoApprovalApproverConfiguration.class, mappedBy = "lobid", fetch = FetchType.EAGER)
    //@OrderBy("mandateLevelAmount")
    private List<AutoApprovalApproverConfiguration> approvers;

AutoApprovalApproverConfiguration.java

public class AutoApprovalApproverConfiguration implements Serializable
{

    private static final long serialVersionUID = 1604255007323958024L;

    @Id
    @SequenceGenerator(allocationSize = 1, name = "seq_autoapprovalapproverconfig_id", sequenceName = "seq_autoapprovalapproverconfig_id")
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator="seq_autoapprovalapproverconfig_id")
    private Long id;
    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinColumn(name = "lobid")
    private Lob lob;
    private BigDecimal mandateLevelAmount;

错误:

org.hibernate.MappingException:无法确定以下类型:java.util.List,在表:Lob处,用于列:[org.hibernate.mapping.Column(approvers)]

我正在使用Java 7和Hibernate 1.2.0.Final

java hibernate jpa
1个回答
0
投票

我通过使JPA批注保持一致,即在getter之上的所有注释,而不是在成员变量之上的某些注释,保持了一致。另外,我从列表挂到集合。

@OneToMany(cascade = CascadeType.ALL, targetEntity = AutoApprovalApproverConfiguration.class, mappedBy = "lob", fetch = FetchType.EAGER)
@OrderBy("mandateLevelAmount")
public Set<AutoApprovalApproverConfiguration> getApprovers() {
    return approvers;
}

@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "lobid")
private Lob lob;
© www.soinside.com 2019 - 2024. All rights reserved.