我希望我的ID是uuid,学生和课程之间应该有多对一的关系。我得到不兼容的类型引用列和引用列。
Student.java
package com.test.model;
import java.util.UUID;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import org.hibernate.annotations.Type;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
@Entity
@Table(name="student",schema="mydb")
public class Student {
@Id
@Type(type="uuid-char")
@Column(name="student_id")
private UUID studentId;
@Column(name="name")
private String sudentName;
@ManyToOne
@JoinColumn(name="course_id")
private Course course;
@Column(name="course_id",insertable = false,updatable = false,nullable = false)
private UUID courseId;
}
课程JAVA
package com.test.model;
import java.util.UUID;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.Type;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
@Entity
@Table(name="course",schema="mydb")
public class Course {
@Id
@Type(type="uuid-char")
@Column(name="id")
private UUID id;
@Column(name="courseName")
private String courseName;
}
例外
Caused by: java.sql.SQLException: Referencing column 'course_id' and referenced column 'id' in foreign key constraint 'FKdfypyqt0stgfc0aij9kcxm99s' are incompatible.
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) ~[mysql-connector-java-8.0.28.jar:8.0.28]
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-java-8.0.28.jar:8.0.28]
at com.mysql.cj.jdbc.StatementImpl.executeInternal(StatementImpl.java:763) ~[mysql-connector-java-8.0.28.jar:8.0.28]
at com.mysql.cj.jdbc.StatementImpl.execute(StatementImpl.java:648) ~[mysql-connector-java-8.0.28.jar:8.0.28]
at com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:94) ~[HikariCP-4.0.3.jar:na]
at com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java) ~[HikariCP-4.0.3.jar:na]
at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) ~[hibernate-core-5.6.4.Final.jar:5.6.4.Final]
... 33 common frames omitted
请学习如何创建关联
@JoinColumn是什么,在Hibernate中是如何使用的
永远不要使用原始ID,比如courseId
!你已经有了@manytone
与@JoinColumn
注释的关联。Hibernate足够聪明,能够理解课程id
将被用作外键。
@Table(name="student",schema="mydb")
public class Student {
@Id
@Type(type="uuid-char")
@Column(name="student_id")
private UUID studentId;
@Column(name="name")
private String sudentName;
@ManyToOne
@JoinColumn(name="course_id")
private Course course;
}
我正在使用JPA,列类型为: 我使用PostgreSql作为我的数据库,它支持bpchar类型,现在我尝试为我的测试添加H2,但问题是,当我运行测试时,我得到以下结果: 是否有其他方法可以实现这一目标?
本文向大家介绍JavaScript数据类型之基本类型和引用类型的值,包括了JavaScript数据类型之基本类型和引用类型的值的使用技巧和注意事项,需要的朋友参考一下 ECMAScript变量包含两种不同数据类型的值:基本类型值和引用类型值。基本类型值是简单的数据段,而引用类型值指那些可能由多个值构成的对象。 在将一个值赋给变量时,解析器必须确定这个值是基本类型还是引用类型。基本类型包括如Unde
给定以下代码,ReSharper会给出错误 null
我正在开发一个使用Spring数据和JPA来实现基于REST的服务的应用程序。我想使用elastcSearch作为索引引擎。我的域对象: 执行时,我得到以下异常:
在之前的 JavaScript 基础文章中(编号 02、编号 07),我们介绍过,变量有以下数据类型: 基本数据类型(值类型):String 字符串、Number 数值、Boolean 布尔值、Null 空值、Undefined 未定义。 引用数据类型(引用类型):Object 对象。 本文,我们针对这两种类型,做个详细介绍。我们先来看个例子。 基本数据类型举例: var a = 23;
Obj类型 创建方法:1.new Func() 使用构造函数 2.对象字面量 访问属性:1.obj['name'] 2.obj.name 第一种可以通过变量访问属性,可以使用会导致语法错的的字符串表示属性名 ES6对对象进行了扩展: 可以在对象中只写属性名,属性值则为属性名代表的变量;方法可以简写为 func(){}这种形式 对象字面量定义时,可以在‘[]'内用表达式作为属性名 Object.is