有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法预先部署处于无效状态的PersistenceUnit[PU][DeployFailed]

我使用EclipseLink作为我的JPA提供商。我的应用程序工作正常,但最近当我部署应用程序时,它给了我一个错误,它不再工作了。我是JPA的新手,虽然我读了日志,但我不明白发生了什么。这与日食素K-93和日食素K-41异常有关。有人能帮我吗?先谢谢你

Exception [EclipseLink-93] (Eclipse Persistence Services - 2.6.3.qualifier): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The table [CONTACT] is not present in this descriptor.
Descriptor: RelationalDescriptor(science.softdev.SongPromoter.model.Album --> [DatabaseTable(ALBUM)])

Exception [EclipseLink-41] (Eclipse Persistence Services - 2.6.3.qualifier): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: A non-read-only mapping must be defined for the sequence number field.
Descriptor: RelationalDescriptor(science.softdev.SongPromoter.model.Album --  [DatabaseTable(ALBUM)])

Runtime Exceptions: 
---------------------------------------------------------

at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.predeploy(EntityManagerSetupImpl.java:1656)
at org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactoryImpl(PersistenceProvider.java:130)
at org.eclipse.persistence.jpa.PersistenceProvider.createEntityManagerFactory(PersistenceProvider.java:188)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
at science.softdev.SongPromoter.Persistance.<clinit>(Persistance.java:16)
... 67 more
Caused by: Exception [EclipseLink-28017] (Eclipse Persistence Services - 2.6.3.qualifier): org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Unable to predeploy PersistenceUnit [PU] in invalid state [DeployFailed].
Internal Exception: javax.persistence.PersistenceException: Exception [EclipseLink-28019] (Eclipse Persistence Services - 2.6.3.qualifier): org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Deployment of PersistenceUnit [PU] failed. Close all factories for this PersistenceUnit.
Internal Exception: Exception [EclipseLink-0] (Eclipse Persistence Services - 2.6.3.qualifier): org.eclipse.persistence.exceptions.IntegrityException

这是我的相册和联系人类的代码:

package science.softdev.SongPromoter.model;


import javax.persistence.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;

@Entity
public class Album {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int idAlbum;
private String albumUUID = UUID.randomUUID().toString();
private String name;
private String author;
private boolean active = true;
private String simplifiedDate;
private String zipUUID = UUID.randomUUID().toString();
private String description = "";

public int getIdAlbum() {
    return idAlbum;
}

public void setIdAlbum(int idAlbum) {
    this.idAlbum = idAlbum;
}

public String getDescription() {
    return description;
}

public void setDescription(String description) {
    this.description = description;
}

public String getZipUUID() {
    return zipUUID;
}

public void setZipUUID(String zipUUID) {
    this.zipUUID = zipUUID;
}

public String getSimplifiedDate() {
    return simplifiedDate;
}

public void setSimplifiedDate(String simplifiedDate) {
    this.simplifiedDate = simplifiedDate;
}

public boolean isActive() {
    return active;
}

public void setActive(boolean active) {
    this.active = active;
}

public void setAlbumUUID(String albumUUID) {
    this.albumUUID = albumUUID;
}

public String getAuthor() {
    return author;
}

public void setAuthor(String author) {
    this.author = author;
}

private String cover;
private String coverUUID = UUID.randomUUID().toString();

public String getCoverUUID() {
    return coverUUID;
}

public void setCoverUUID(String coverUUID) {
    this.coverUUID = coverUUID;
}

private String zipLocation;
private Date releaseDate;

public String getAlbumUUID() {
    return albumUUID;
}

public String getZipLocation() {
    return zipLocation;
}

public void setZipLocation(String zipLocation) {
    this.zipLocation = zipLocation;
}

public Date getReleaseDate() {
    return releaseDate;
}

public void setReleaseDate(Date releaseDate) {
    this.releaseDate = releaseDate;
}

public String getCover() {
    return cover;
}

public void setCover(String cover) {
    this.cover = cover;
}

public void setMixes(List<Mix> mixes) {
    this.mixes = mixes;
}

@OneToMany(mappedBy="album",cascade = CascadeType.ALL)
private List<Mix> mixes = new ArrayList<Mix>();

@OneToMany(mappedBy="author",cascade = CascadeType.ALL)
private List<Review> reviews = new ArrayList<Review>();

public List<Review> getReviews() {
    return reviews;
}

public void setReviews(List<Review> reviews) {
    this.reviews = reviews;
}

public String getName() {
    return name;
}

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

public List<Mix> getMixes() {
    return mixes;
}

public void setMixes(ArrayList<Mix> mixes) {
    this.mixes = mixes;
}
}

这是联系班:

package science.softdev.SongPromoter.model;

import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;


@Entity
public class Contact {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int idContact;
private String name;
private String email;
private String contactUUID = UUID.randomUUID().toString();
private boolean active;

@OneToMany(mappedBy = "author")
private List<Review> reviews = new ArrayList<Review>();

public List<Review> getReviews() {
    return reviews;
}

public void setReviews(List<Review> reviews) {
    this.reviews = reviews;
}

public boolean isActive() {
    return active;
}

public void setActive(boolean active) {
    this.active = active;
}

public String getContactUUID() {
    return contactUUID;
}

public void setContactUUID(String contactUUID) {
    this.contactUUID = contactUUID;
}

public int getIdContact() {
    return idContact;
}

public void setIdContact(int id) {
    this.idContact = id;
}

public String getName() {
    return name;
}

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

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}
}

共 (1) 个答案

  1. # 1 楼答案

    通过将持久性提供程序从EclipeLink更改为Hibernate(在Payara server 4.1中运行),我最终解决了这个问题。我在互联网上找不到任何可以帮助我解决这个问题的相关资源。这可能是EclipseLink 2.6.3中未报告的错误,因为更换JPA提供商就解决了这个问题