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

Hibernate连接两个实体

陆翰藻
2023-03-14
  • AnsprechPartner
  • Lieferant

ansprechpartner.java

@Entity
@Table(name = "ANSPRECHPARTNER")
@EntityListeners(AuditingEntityListener.class)
@JsonIgnoreProperties(value = {"anlageAm", "updatedAt"}, allowGetters = true)
public class Ansprechpartner {

...

@NotNull
@ManyToOne
@JoinColumn(name = "lief_code", foreignKey=@ForeignKey(name = "APART_LIEF_FK"))
private Lieferanten liefCode;

public Lieferanten getLiefCode() {
    return liefCode;
}

public void setLiefCode(Lieferanten liefCode) {
    this.liefCode = liefCode;
}

...

}

lieferant.java

@Entity
@Table(name = "LIEFERANTEN")
@EntityListeners(AuditingEntityListener.class)
@JsonIgnoreProperties(value = {"anlageAm"}, allowGetters = true)
public class Lieferanten {

...

@Id
private String code;

@OneToMany(mappedBy = "liefCode")
private Set<Ansprechpartner> apart;


public String getCode() {
    return code;
}


public void setCode(String code) {
    this.code = code;
}

public Set<Ansprechpartner> getApart() {
    return apart;
}


public void setApart(Set<Ansprechpartner> apart) {
    this.apart = apart;
}

...

}
@RestController
@RequestMapping("/apart")
public class AnsprechpartnerController {

...

@GetMapping("/all/{id}")
public Ansprechpartner getApartWithId(@PathVariable("id") long id) {

    Ansprechpartner apart = apartRepository.findOne(id);

    return apartRepository.findOne(id);
}

}

在我的AnsprechPartner.java中,我是这样做的:

    @NotNull
    @JsonIgnoreProperties("apart")
//  @JsonManagedReference
    @ManyToOne
    @JoinColumn(
         name = "lief_code", 
         foreignKey=@ForeignKey(name = "APART_LIEF_FK")
    )
    private Lieferanten liefCode;

在我的Lieferanten.java中,我是这样做的:

//  @JsonBackReference
    @JsonIgnoreProperties("liefCode")
    @OneToMany(mappedBy = "liefCode", fetch = FetchType.LAZY)
    private Set<Ansprechpartner> apart;

共有1个答案

燕雨石
2023-03-14

为了避免无限递归,可以使用@JSONManagedReference&@JSONBackReference Json无限递归是序列化具有双向关系的Java对象时最常见的问题之一。

@JSONManagedReference:带有注释的部件通常会被序列化。@jsonbackreference:带有注释的部分将从序列化中省略。

比如:

   @JsonBackReference
   private Set<Ansprechpartner> apart;
 类似资料:
  • 我正在努力使用jpa Crudepository接口连接两个实体模型。我不知道如何映射两个实体模型并在@query注释中编写查询。这些是我的实体类。我想执行这个查询“从taxi\u driver\u映射中选择dppd.payment\u plan\u id,dppd.attribute\u value,dppd.attribute\u id作为tdm加入driver\u payment\u pla

  • 比如说,我有一个名为“Contact”的表,其中“first\u name”和“last\u name”作为列。基本上,“从联系人c中选择concat(c.firstname,,,c.lastname)作为全名”是我在hibernate中想要做的。 我可以将整个查询放在createQuery中,并获得所需的输出。但是,我不想在hibernate中执行sql查询。我在这里找到了一篇类似的帖子“我们可

  • 另一个表是Department表,包含以下列: 下面是表值的示例 为了返回带有状态标签的员工信息,我们需要执行连接: Employee.java Department.java 然后是存储库(DAO):

  • 问题内容: 有简单的解决方案,可通过串联两个或java 。由于是经常使用的。是否有任何简单的方法来连接两个? 这是我的想法: 它可以工作,但实际上可以转换为,然后再次转换回。 问题答案: 您可以使用协力让这件事没有任何自动装箱拆箱或完成。这是它的外观。 请注意,返回,然后将其与另一个串联,然后再收集到数组中。 这是输出。 [1、34、3、1、5]

  • 我有一个dockerized应用程序,其中有几个服务使用Docker-Compose运行。我想使用另一个docker-compose应用程序docker-elk将这个应用程序与elasticsearch/logstash/kibana(ELK)连接起来。两者都运行在开发中的同一台docker机器中。在生产中,情况可能就不是这样了。 如何配置应用程序的链接到ELK堆栈?

  • 问题内容: 我有一个实体- 。由描述。 Hibernate为每个实体创建一个表,因此当我调用时,我的数据总是保存到该表中。 现在,我需要另一个表来存储相同类型的数据,并且只需要将我的实体保存到该表中。 数据结构 (类似这样): 使用这个 : 和结果,我应该在和 中。 由于系统限制,我无法将这两个对象放在一个表中。(即使创建额外的字段也是个坏主意)。 我可以不进行子类化吗?使用Programmati