首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法创建one_to_one关系:

无法创建one_to_one关系:
EN

Stack Overflow用户
提问于 2022-08-27 22:19:53
回答 1查看 43关注 0票数 2

我试图在两个表之间创建一个OneToOne关系,但我收到了错误。

我用了很多教程,但没有任何帮助。例如,百隆教程:

项目结构:

代码语言:javascript
运行
复制
@Entity
@Table(name="user")
public class User{

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

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "personal_data_id")
    private PersonalData personalData;

//getters, setters
}

@Entity
@Table(name = "personal_data")
public class PersonalData {

    @Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;

    @OneToOne(mappedBy = "personal_data")
    private User user;

//getters, setters
}

错误:

代码语言:javascript
运行
复制
Caused by: org.hibernate.AnnotationException: Unknown mappedBy in: com....dto.PersonalData.user, referenced property unknown: com...dto.User.personal_data

格莱德尔:

代码语言:javascript
运行
复制
plugins {
    id 'org.springframework.boot' version '2.7.3'
    id 'io.spring.dependency-management' version '1.0.13.RELEASE'
    id 'java'
}

group = 'com.hltr'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-security'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5'
    implementation group: 'mysql', name: 'mysql-connector-java', version: '8.0.30'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation 'org.springframework.security:spring-security-test'
}

tasks.named('test') {
    useJUnitPlatform()
}

application.properties:

代码语言:javascript
运行
复制
#Database settings
spring.datasource.url=jdbc:mysql://localhost:3306/db?useUnicode=yes&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update

spring.datasource.tomcat.connection-properties=useUnicode=true;characterEncoding=utf-8;
spring.datasource.sql-script-encoding=UTF-8
spring.jpa.open-in-view=false

#Disable thymeleaf cashing
spring.template.cache = false;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-27 22:23:09

您需要为mappedby使用字段名,而不是列名。

在您的例子中,应该是@OneToOne(mappedBy = "personalData")

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73514758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档