我收到以下错误:

[class model.VerkaufterArtikel]在关系属性[field verkauf]中使用非实体[class model.Verkauf]作为目标实体。

但是该类在persistence.xml中列出。而且我还尝试不排除未列出的课程。

我正在使用EclipseLink作为JPA实现。

我试图排除这种关系,但是后来我无法维持Verkauf。其他类正常工作。

情况是:我有一个销售(Verkauf),其中包含已售出的物品(VerkaufteArtikel)。

型号.Verkauf:

package model;


@Entity
@Table(name = "verkauf")
@NamedQuery(name = "Verkauf.findAll", query = "SELECT v FROM Verkauf v")
public class Verkauf implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    private int verkID;



    private int gegeben;

    @OneToMany(mappedBy="verkauf")
    private List<VerkaufterArtikel> verkaufArtikels = new ArrayList<VerkaufterArtikel>();


型号。VerkaufterArtikel:

@Entity
@Table(name="verkauf_artikel")
@NamedQuery(name="VerkaufArtikel.findAll", query="SELECT v FROM VerkaufterArtikel v")
public class VerkaufterArtikel implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    private int id;

    private float anz;

    private int artID;

    private int preispro;


    @ManyToOne
    @JoinColumn(name="verkaufID")
    private Verkauf verkauf;


我的持久性XML:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"
    xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    <persistence-unit name="dbm" transaction-type="RESOURCE_LOCAL">
        <!-- <exclude-unlisted-classes>false</exclude-unlisted-classes>-->
        <class>model.Artikel</class>
        <class>model.ArtikelInWarenkorb</class>
        <class>model.VerkaufterArtikel</class>
        <class>model.Verkaeufer</class>
        <class>model.Verkauf</class>
        <properties>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/mdb" />
            <property name="javax.persistence.jdbc.user" value="user" />
            <property name="javax.persistence.jdbc.password" value="password" />
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
            <property name="eclipselink.allow-zero-id" value="true" />
        </properties>


    </persistence-unit>
</persistence>


和表:

CREATE TABLE `verkauf_artikel` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`verkaufID` INT(11) NULL DEFAULT NULL,
`artID` INT(11) NULL DEFAULT NULL,
`anz` FLOAT NULL DEFAULT NULL,
`preispro` INT(11) NULL DEFAULT NULL,
PRIMARY KEY (`id`),

CREATE TABLE `verkauf` (


id` INT(11) NOT NULL AUTO_INCREMENT,
    `verkID` INT(11) NULL DEFAULT '0',
    `zeit` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    `gegeben` INT(11) NOT NULL DEFAULT '0',
        PRIMARY KEY (`id`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB;


谢谢!

最佳答案

我认为您的@ManyToOneMapping不正确,应该看起来像这样:

@ManyToOne
@JoinColumn(name="verkID")
private Verkauf verkauf;

09-27 15:01