当前位置: 首页 > 知识库问答 >
问题:

Hibernate注释一对一

万俟小林
2023-03-14

我需要帮助在java类中为这些关系表创建映射Hibernate注释(一对一):

CREATE TABLE book
(
  id_book integer NOT NULL,
  isdn character varying(10) NOT NULL,
  CONSTRAINT "pk_bookId" PRIMARY KEY ("id_book")
)


CREATE TABLE info
(
  id_info serial NOT NULL,
  title character varying(200),
  author character varying(200),
  id_book integer NOT NULL,

  CONSTRAINT info_pkey PRIMARY KEY ("id_info"),
  CONSTRAINT "info_id_book_fkey" FOREIGN KEY ("id_book")
      REFERENCES book ("id_book") MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE NO ACTION,
  CONSTRAINT "info_id_book_key" UNIQUE ("id_book")
)

有人能帮我吗?谢谢你。

共有1个答案

巫马越彬
2023-03-14

您可以在这两个实体之间创建一对一关系,如下所示。

@Entity
@Table(name = "book")
class book{
 private int id;
 private String isdn;
 private Info info;

@Id
@Column(name="id_book", unique=true, nullable=false)
@GeneratedValue
 public int getId(){
    return this.id;
 }

 @Column(name="isdn")
 public String getIsdn(){
    return this.idsn;
 }

 public void setId(int id){
    this.id = id;
 }

 public void setIsdn(String isdn){
    this.isdn = isdn;
 }
 @OneToOne
 @PrimaryKeyJoinColumn
 public Info getInfo(){
    return this.info;
 }

 public void setInfo(Info info){
    this.info = info;
 }
}

@Entity
@Table(name = "info")
class Info{
 private int id;
 private String title;
 private String author;
 private Book book;

    @Id
    @Column(name="id_info", unique=true, nullable=false)
    @GeneratedValue
 public int getId(){
    return this.id;
 }

 @Column(name="title")
 public String getTitle(){
    return this.title;
 }

 public void setId(int id){
    this.id = id;
 }

 public void setTitle(String title){
    this.title = title;
 }
 @OneToOne(mappedBy="info", cascade=CascadeType.ALL)
 public Book getBook(){
    return this.book;
 }

 public void setBook(Book book){
    this.book = book;
 }
 public void setAuthor(String author){
    this.author = author;
 }
  @Column(name="author")
 public String getAuthor(){
    return this.author ;
 }


}
 类似资料:
  • 我有两个不同的表,Person表和Employee表。我需要这两者之间的一对一映射。Employee表的emp_id引用Person表的person_id。在使用注释编写映射方面我需要一些帮助

  • 我有两个表:人员和帐户(一对多关系)。 这不是我第一次使用一对多关系,但我以前没有遇到过这个错误。 完整的StackTrace:

  • 我想使用联接表在两个表之间建立一对多关系。 这就是为什么我想使用联接表: Hibernate单向一对多关联-为什么连接表更好 最后,我想使用Hibernate注释来执行此操作。 我找到了一些使用xml映射实现这一点的示例,但没有使用注释。 我相信这将是如何创建表需要

  • 我有一个包含三个字段的表,比如a、b、c。我想添加一个约束,确保如果a不为null,那么b和c也不为null。我已经使用以下SQL完成了这项工作 使用hibernate注解@Check有没有办法达到同样的效果? 我找不到一个有用的注释示例,开发人员倾向于根本不使用它吗?

  • 问题内容: 我有以下带注释的Hibernate实体类: 我的意图是在Cat和Kitten之间建立双向的一对多/多对一关系,Kitten是“拥有方”。 我想发生的事情是,当我创建一个新的Cat,然后是一个引用该Cat的新 小猫时,我Cat上的这组小猫应该包含新的Kitten 。但是,在以下测试 中不会发生这种情况 : 即使在重新查询Cat之后,集合仍然为空: 我在这里对Hibernate期望过高吗?

  • 问题内容: 我正在尝试将Hibernate 4仅用于注释和一个文件。我做了自己的注释,并使用反射将其添加到配置中。我可以用这种方式很好地使用Hibernate 4,但是我的配置是使用不推荐使用的方法构建的。 (不建议使用的代码:)。 甚至hibernate 4文档也显示以这种方式构建配置。 如果我尝试使用新方法(,则不会得到相同的结果,并且似乎很多不必要的代码可以完全执行不推荐使用的方法。但是,我