Spring boot 如何使用SpringDataJPA与数据库中的非实体表建立外键关系?
我的spring boot项目使用现有数据库,我的项目中有一个新的模型实体/表,该实体/表必须与数据库中的现有表具有外键约束 我试图在线找到解决方案,但所有答案都是针对这样的情况,即两个表都作为实体存在于该项目中,并且使用了一些@manytone、@OneToMany注释 我无法定义这些注释,因为我的项目中没有引用表作为实体或模型 假设我有这样的课程:Spring boot 如何使用SpringDataJPA与数据库中的非实体表建立外键关系?,spring-boot,jpa,spring-data-jpa,foreign-keys,Spring Boot,Jpa,Spring Data Jpa,Foreign Keys,我的spring boot项目使用现有数据库,我的项目中有一个新的模型实体/表,该实体/表必须与数据库中的现有表具有外键约束 我试图在线找到解决方案,但所有答案都是针对这样的情况,即两个表都作为实体存在于该项目中,并且使用了一些@manytone、@OneToMany注释 我无法定义这些注释,因为我的项目中没有引用表作为实体或模型 假设我有这样的课程: @Entity(name = "user") public class User { @Id @GeneratedValue
@Entity(name = "user")
public class User {
@Id
@GeneratedValue
private long userId;
private long departmentId;
我想在departmentId列上放置一个外键约束,以引用现有department表的id列,该表在我的项目中未定义为模型或实体
谢谢像平常一样做就行了
范例
@Column(name = "department_id")
private Department departmentId;
您可以稍后访问it Department.departmentId。希望这有帮助。像平常一样做就行了
范例
@Column(name = "department_id")
private Department departmentId;
您可以稍后访问it Department.departmentId。希望这有帮助。像这样试试
@ManyToOne
@JoinColumn(name="(column name of current entity)", referencedColumnName="(column name in target entity)")
private Department departmentId;
如果两个实体中的列名相同,可以跳过referencedColumnName
@ManyToOne
@JoinColumn(name="(column name of current entity)", referencedColumnName="(column name in target entity)")
private Department departmentId;
如果两个实体中的列名相同,则可以跳过referencedColumnName谢谢回答,因此我需要一个具有department表架构的department实体类?谢谢回答,所以我需要一个department实体类和department表的模式?是的,你需要目标表的实体,否则你不能映射整个实体。另一个解决方法是使用@Formula,是的,您需要目标表的实体,否则无法映射整个实体。另一个解决方法是使用@Formula