当前位置: 首页 > 知识库问答 >
问题:

无法向Spring data starter项目添加第二个实体

周翼
2023-03-14

但是,当我添加另一个实体Person和一个PersonRepository并尝试持久化该实体时,会出现如下所示的错误。这就像在application.java中存在某种内部类$1一样,Spring数据试图将其映射为一个实体。

java.lang.IllegalArgumentException:未知实体:Hello.Application$1

package hello;

import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
@ToString
@NoArgsConstructor
@Data
public class Person {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private int age;
}
package hello;

import org.springframework.data.repository.CrudRepository;

public interface PersonRepository extends CrudRepository<Person, Long> {
}
package hello;

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
@Slf4j
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }

    /*
    @Bean
    public CommandLineRunner demo(CustomerRepository repository) {
        return (args) -> {
            repository.save(new Customer("Jack", "Bauer"));
            repository.save(new Customer("Chole", "O'Brian"));
            repository.save(new Customer("Kim", "Bauer"));
            repository.save(new Customer("David", "Palmer"));
            repository.save(new Customer("Michelle", "Dessler"));

            // fetch all customers
            log.info("Customers found with findAll():");
            log.info("-------------------------------");
            repository.findAll().forEach(c -> log.info(c.toString()));
        };
    }
    */

    @Bean
    public CommandLineRunner demo(PersonRepository repository) {
        return (args) -> {
            repository.save(new Person(){{
                setAge(20);
            }});

            // fetch all customers
            log.info("Customers found with findAll():");
            log.info("-------------------------------");
            repository.findAll().forEach(c -> log.info(c.toString()));
        };
    }
}

共有1个答案

邓德本
2023-03-14

错误消息清楚地表明您有一个未映射的类。你正确地扣除了

这就像在application.java中,有某种内部类$1,Spring data试图将其映射为一个实体。

所讨论的内部类在代码中定义为Person的子类

repository.save(new Person(){{
    setAge(20);
}});
Person p = new Person();
p.setAge(20);
repository.save(p)
 类似资料:
  • 我对JavaFX还很陌生。我已经无望地试图让它工作了这么长时间,但不知道为什么它不起作用。项不显示在TableView上。我使用scene Builder创建了UI。我看过很多类似的问题,似乎没有什么帮助。 简化为最小代码: 主: 控制器: Person类: FXML: 多谢了。

  • 问题内容: 尝试从此处使用unstruction将alamofire添加到快速项目 完成所有这些步骤,清理项目很多计时器并重新启动XCode,没有任何帮助。错误不会消失 http://i.stack.imgur.com/kNU3R.png “无法为’Alamofire’加载基础模块”,无关紧要 我所做的更改: 1)将项目文件添加到我的项目 i.stack.imgur.com/eUe8E.png 2

  • 让我把我的整个问题粘贴起来。请考虑我的英语,我的英语有点弱。 我有一个接口ArtPiece.java。我有Artitems.java类,并且在Artitems中实现了ArtPiece.java对象。 我的问题是,我需要从Artpeice在ArrayList中添加项目,艺术品基本上会有脆弱的项目。示例[AddItem(Artpiece Artpiece)],然后我需要设置从getCost()方法获取

  • 我试图通过FXML文件将项目添加到组合框中,但出现了这个错误。 这是我的FXML 主要 当我通过scene builder打开它时,会出现这个错误 我已经仔细检查过了,但代码似乎没问题。当我删除试图添加到FXML的值时,错误消失了,但我的组合框变为空。它说String不是有效的类型。我怎样才能解决这个问题?为什么它是无效的?我在这里检查了类似的问题,但是错误是由于没有导入FXCollections

  • 问题内容: 我是Java的新手,主要是CardLayout。我只想切换由JPanels表示的“窗口”。我在CardLayout的某处读过这份工作。但我的问题是,当到(这是CardLayout之一),它改变的内容几个像素顶端,从它的中心位置了。我在代码中跳过了它应该在的位置。 我有以下代码: 拜托,我搞砸了吗?谢谢。 问题答案: 由于您要在主JPanel中添加两个JPanel,因此这两个面板都需要容