Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring启动错误:@OneToOne或@ManyToOne引用未知实体_Java_Spring_Spring Boot_Hibernate_Maven - Fatal编程技术网

Java Spring启动错误:@OneToOne或@ManyToOne引用未知实体

Java Spring启动错误:@OneToOne或@ManyToOne引用未知实体,java,spring,spring-boot,hibernate,maven,Java,Spring,Spring Boot,Hibernate,Maven,我是一名物理工程师,我必须对地震进行一些研究,为此我正在开发一个软件来进行一些计算。我有java和android的经验,但是我在使用SpringBoot框架时遇到了一些困难。我需要向MySql数据库发送一些重要的地震,以分析它们。我有两个实体,一个用于地震,一个用于震中附近的距离列表。目前我的问题在于错误开始的@OneToMany和@manytone关系。对于每个实体,我还有一个DTO,如下所示: 地震性: @Entity(name = "earthquakes") publ

我是一名物理工程师,我必须对地震进行一些研究,为此我正在开发一个软件来进行一些计算。我有java和android的经验,但是我在使用SpringBoot框架时遇到了一些困难。我需要向MySql数据库发送一些重要的地震,以分析它们。我有两个实体,一个用于地震,一个用于震中附近的距离列表。目前我的问题在于错误开始的@OneToMany和@manytone关系。对于每个实体,我还有一个DTO,如下所示: 地震性:

@Entity(name = "earthquakes")
public class EarthquakeEntity implements Serializable {

    @Id
    @GeneratedValue
    private long id;

    @Column(nullable = false)
    private String earthquakeId;

    @Column(nullable = false)
    private float magnitude;

    @Column(nullable = false, length = 120)
    private String region;

    @Column(nullable = false, length = 50)
    private String dateTime;

    @Column(nullable = false, length = 50)
    private String location;

    @Column(nullable = false, length = 50)
    private Integer depth;

    @OneToMany(mappedBy = "earthquakeDetails", cascade = CascadeType.ALL)
    private List<DistancesEntity> distances;

    // getters and setters
}
距离到:

public class DistanceDto implements Serializable {
    private long id;
    private String distanceId;
    private String distance;
    private Integer population;
    private String localTime;
    private EarthquakeDto earthquakeDetails;

    // getters and setters
}
在我的服务中,我有将地震添加到数据库的逻辑, EarthquakeServiceImpl.java

Override
    public EarthquakeDto addEarthquake(EarthquakeDto earthquake) {
        for (int i = 0; i < earthquake.getDistances().size(); i++) {
            DistanceDto distance = earthquake.getDistances().get(i);
            distance.setEarthquakeDto(earthquake);
            distance.setDistanceId(utils.generateQuakeDistanceID(30));
            earthquake.getDistances().set(i, distance);
        }

        ModelMapper modelMapper = new ModelMapper();
        EarthquakeEntity earthquakeEntity = modelMapper.map(earthquake, EarthquakeEntity.class);

        String earthquakeId = utils.generateEarthquakeID(30);
        earthquakeEntity.setEarthquakeId(earthquakeId);

        EarthquakeEntity addedEarthquakes = earthquakeRepository.save(earthquakeEntity);

        EarthquakeDto returnQuake = modelMapper.map(addedEarthquakes, EarthquakeDto.class);

        return returnQuake;
    }
在决定将我的问题发布到堆栈溢出之前,我做了一些研究,但没有一个对我有效。错误似乎与hibernate有关,我仔细检查了是否从javax.persistence和maven依赖项导入了注释。看起来一切正常,但错误依然存在:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: @OneToOne or @ManyToOne on com.physicslab.Physics.Lab.io.entity.DistancesEntity.earthquakeDetails references an unknown entity: com.physicslab.Physics.Lab.shared.dto.EarthquakeDto
还有一个

Caused by: org.hibernate.AnnotationException: @OneToOne or @ManyToOne on com.physicslab.Physics.Lab.io.entity.DistancesEntity.earthquakeDetails references an unknown entity: com.physicslab.Physics.Lab.shared.dto.EarthquakeDto
我需要一些关于我做错了什么或者我是否做了不好的练习的建议。如果我在这里做了什么,我也会发布我的maven依赖项:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.physicslab</groupId>
    <artifactId>Physics-Lab</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>Physics-Lab</name>
    <description>Project and laboratory management for physics projects</description>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <jjwt.version>0.6.0</jjwt.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>${jjwt.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.3.2</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <version>2.3.1.RELEASE</version>
        </dependency>


        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.6</version>
        </dependency>

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>6.0.10.Final</version>
        </dependency>

        <dependency>
            <groupId>org.modelmapper.extensions</groupId>
            <artifactId>modelmapper-spring</artifactId>
            <version>2.3.0</version>
        </dependency>

        <dependency>
            <groupId>commons-beanutils</groupId>
            <artifactId>commons-beanutils</artifactId>
            <version>1.9.4</version>
        </dependency>

        <dependency>
            <groupId>org.passay</groupId>
            <artifactId>passay</artifactId>
            <version>1.3.0</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.11.1</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.11.1</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.11.1</version>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

4.0.0
org.springframework.boot
spring启动程序父级
2.3.1.1发布
com.physicslab
物理实验室
0.0.1-快照
物理实验室
物理项目与实验室管理
UTF-8
UTF-8
1.8
0.6.0
org.springframework.boot
SpringBootStarterWeb
org.springframework.boot
弹簧启动安全
io.jsonwebtoken
jjwt
${jjwt.version}
org.apache.commons
commons-lang3
3.3.2
org.springframework.boot
spring引导启动器数据jpa
2.3.1.1发布
com.google.code.gson
格森
2.8.6
org.hibernate
休眠验证器
6.0.10.1最终版本
org.modelmapper.extensions
模型映射器弹簧
2.3.0
公地小海狸
公地小海狸
1.9.4
org.passay
帕赛
1.3.0
com.fasterxml.jackson.core
杰克逊数据绑定
2.11.1
com.fasterxml.jackson.core
杰克逊核心
2.11.1
com.fasterxml.jackson.core
杰克逊注释
2.11.1
org.springframework.boot
弹簧靴开发工具
运行时
真的
mysql
mysql连接器java
运行时
org.springframework.boot
弹簧起动试验
测试
org.junit.vintage
朱尼特老式发动机
org.springframework.boot
springbootmaven插件
也许有人可以建议我读一些关于SpringBoot框架的书,因为教程的处理方式不同,不能很好地理解这些概念。
提前感谢

如错误所示,您正在另一个JPA实体中注释(引用)一个非持久性类型

earthquakentity
应为映射类型,而不是
EarthquakeDto

@Entity(name = "distances")
public class DistancesEntity implements Serializable {

    // other fields

    @ManyToOne(fetch = FetchType.LAZY, optional = false)
    @JoinColumn(name = "earthquakes_id", nullable = false)
    private EarthquakeEntity earthquakeDetails;
 
    // getters and setters
}
然后,在将
EarthquakeDto
映射到
earthquakentity
实例时,您也应该这样做


请注意,您的问题与Spring框架本身无关,是一个纯粹的JPA-Hibernate错误。

在您的实体中,您有
私有地震到地震详细信息此Dto不是实体。是的,正如您提到的,我已更改为EarthquakeEntity,但控制器中有一个空指针。我如何正确配置ModelMapper>您可以用您迄今为止尝试过但尚未奏效的内容更新您的主要问题,我很乐意为您提供帮助:)
Caused by: org.hibernate.AnnotationException: @OneToOne or @ManyToOne on com.physicslab.Physics.Lab.io.entity.DistancesEntity.earthquakeDetails references an unknown entity: com.physicslab.Physics.Lab.shared.dto.EarthquakeDto
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.physicslab</groupId>
    <artifactId>Physics-Lab</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>Physics-Lab</name>
    <description>Project and laboratory management for physics projects</description>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <jjwt.version>0.6.0</jjwt.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>${jjwt.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.3.2</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <version>2.3.1.RELEASE</version>
        </dependency>


        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.6</version>
        </dependency>

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>6.0.10.Final</version>
        </dependency>

        <dependency>
            <groupId>org.modelmapper.extensions</groupId>
            <artifactId>modelmapper-spring</artifactId>
            <version>2.3.0</version>
        </dependency>

        <dependency>
            <groupId>commons-beanutils</groupId>
            <artifactId>commons-beanutils</artifactId>
            <version>1.9.4</version>
        </dependency>

        <dependency>
            <groupId>org.passay</groupId>
            <artifactId>passay</artifactId>
            <version>1.3.0</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.11.1</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.11.1</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.11.1</version>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>
@Entity(name = "distances")
public class DistancesEntity implements Serializable {

    // other fields

    @ManyToOne(fetch = FetchType.LAZY, optional = false)
    @JoinColumn(name = "earthquakes_id", nullable = false)
    private EarthquakeEntity earthquakeDetails;
 
    // getters and setters
}