gpt4 book ai didi

java - Hibernate 映射的 ="table_name"令人困惑

转载 作者:行者123 更新时间:2023-12-02 02:40:57 26 4
gpt4 key购买 nike

我有两个域模型,如下所示,

@Entity
@Table(name = "candidate") // lowercase-for-database-conventions
public class Candidate {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
.
.
.
@OneToOne(mappedBy="Candidate", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
//above here, mappedBy has Class name to map, as OO Design suggests.

private Ctc ctc;

}

当我尝试运行该应用程序时,它给了我这个异常。

org.hibernate.AnnotationException: Unknown mappedBy in: com.hrsystem.model.Candidate.ctc, referenced property unknown: com.hrsystem.model.Ctc.Candidate

但是,如果我将 mappedBy 的值完全按照数据库约定设置(即 @Table(name="candidate") 中的小写字母),它就可以工作完全没问题。

所以我的问题是,尽管我们使用面向对象设计,为什么我们应该鼓励数据库约定驱动的开发?

更新---

这是我的 Ctc.java 实体。

@Entity
@Table(name = "ctc")
public class Ctc {

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

private double basic;
private double hra;
private double da;

@OneToOne
@JoinColumn(name = "candidate_id")
private Candidate candidate;

}

以及它下面的 getter 和 setter..!!

最佳答案

您不将表名称放入mappedBy中,而是将引用的名称放入对象中。

所以在你的情况

@OneToOne(mappedBy="candidate", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
//above here, mappedBy has Class name to map, as OO Design suggests.

private Ctc ctc;

我们希望 Ctc 类是这样的

public class Ctc {

//other properties
@OneToOne
@JoinColumn
private Candidate candidate

关于java - Hibernate 映射的 ="table_name"令人困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45477112/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com