【问题标题】:BeanInstantiationException Error when try to save Artist Entity [duplicate]尝试保存艺术家实体时出现BeanInstantiationException错误[重复]
【发布时间】:2018-05-09 17:47:41
【问题描述】:

org.springframework.beans.factory.BeanCreationException: 错误 创建文件中定义的名称为“艺术家”的bean 引起:org.springframework.beans.BeanInstantiationException:无法实例化[com.musicreview.model.Artist]:未找到默认构造函数; 引起:java.lang.NoSuchMethodException: com.musicreview.model.Artist.()

@Entity
@Repository
@Data
@NoArgsConstructor(force = true)
public class Artist {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;

    @Column(name = "artist_firstname")
    private String artist_firstname;

    @Column(name = "artist_secondname")
    private String artist_secondname;

    @Column(name = "artist_nickname")
    private String artist_nickname;

    @ManyToMany (fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE})
    @JoinTable(name = "artist_recordlabel", joinColumns = @JoinColumn(name = "artist_id"),
            inverseJoinColumns = @JoinColumn(name = "label_id"))
    private Set<RecordLabel> recordLabels;

    @ManyToMany (fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE})
    @JoinTable (name = "artist_musicrelease", joinColumns = @JoinColumn (name = "artist_id"),
    inverseJoinColumns = @JoinColumn (name = "musicrelease_id"))
    private Set <MusicRelease> musicReleaseSet;


    public Artist(String artist_firstname, String artist_secondname, String artist_nickname) {
        this.artist_firstname = artist_firstname;
        this.artist_secondname = artist_secondname;
        this.artist_nickname = artist_nickname;
    }
}


    -- Table: Artist
CREATE TABLE artist (
  id                INT          NOT NULL AUTO_INCREMENT PRIMARY KEY,
  artist_firstname  VARCHAR(255) NOT NULL,
  artist_secondname VARCHAR(255) NOT NULL,
  artist_nickname   VARCHAR(255) NOT NULL
)
  ENGINE = InnoDB;
-- Table: Artist
CREATE TABLE artist (
  id                INT          NOT NULL AUTO_INCREMENT PRIMARY KEY,
  artist_firstname  VARCHAR(255) NOT NULL,
  artist_secondname VARCHAR(255) NOT NULL,
  artist_nickname   VARCHAR(255) NOT NULL
)
  ENGINE = InnoDB;
-- Table for mapping artist and label: artist_recordlabel
CREATE TABLE artist_musicrelease (
  artist_id       INT NOT NULL,
  musicrelease_id INT NOT NULL,

  FOREIGN KEY (artist_id) REFERENCES artist (id),
  FOREIGN KEY (musicrelease_id) REFERENCES musicrelease (id),

  UNIQUE (artist_id, musicrelease_id)
)
  ENGINE = InnoDB;

不知道有什么问题((

【问题讨论】:

    标签: java spring jpa


    【解决方案1】:

    你需要在这里定义一个默认的构造函数。 由于这里没有默认构造函数,只定义了Arg-Constructor。

    在代码中添加以下 sn-p 以定义默认构造函数:

    public Artist(){}
    

    这有望解决您的问题。

    【讨论】:

    • 不客气。如果这是所需的解决方案,请支持我的答案。谢谢。
    【解决方案2】:

    在 JPA 实体中必须有默认构造函数才能从实体实例化对象,只需创建一个空构造函数,如下所示,您的问题将得到解决。

        public Artist(){//do nothing}
    

    【讨论】:

    • 不客气
    猜你喜欢
    • 2014-09-05
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-19
    • 1970-01-01
    • 2016-11-01
    相关资源
    最近更新 更多