java - 为什么出现java.lang.StackOverflowError : null when I try to print my entity

标签 java spring hibernate hibernate-mapping

我是 Spring 新人,我的映射类有问题。 当我想连接一个集合时,我遇到了一个奇怪的错误,例如 StackOverflowError: null

这是我的第一个实体。

@Entity(name = "utilisateurs")
public class Utilisateur {
@Id @GeneratedValue
@Column(name = "id_utilisateur")
private Integer id;
@Pattern(regexp = "[\\p{L} '-]+",message = "ce champ ne doit pas contenir des 
chiffres")
@NotNull
@Column(name = "nom")
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "id_utilisateur")
private List<Reservation> reservations= new ArrayList<>();

@Override
public String toString() {
    return "Utilisateur{" +
            "id=" + id +

            ", reservations=" + reservations +
            '}';
    }

这是我的二等地形

@Entity(name = "terrains")
public class Terrain {

@Id @GeneratedValue
@Column(name = "id_terrain")
private Integer id;


@NotNull
@Size(min = 3, max = 25)
@Column(name = "nom_terrain")
@TerrainUnique(message = "terrain deja existant")
private  String nomTerrain;

@Column(name = "actif")
private  boolean actif;

@ManyToOne
@JoinColumn(name = "id_utilisateur")
private Utilisateur utilisateur;

我也预订了三等舱

@Id @GeneratedValue
@Column(name = "id")
private Integer id;
@Column(name = "date_creation_reservation")
 @ManyToOne
@JoinColumn(name = "id_utilisateur")
private   Utilisateur utilisateur;
@ManyToOne
@JoinColumn(name = "id_terrain")
private Terrain terrain;
@ManyToOne
@JoinColumn(name = "id_tarif")
private Tarif tarif;
  @Override
public String toString() {
    return "Reservation{" +
            "id=" + id +
            ", dateCreationReservation=" + dateCreationReservation +
            ", dateReservation=" + dateReservation +
            ", heureDebut=" + heureDebut +
            ", heureFin=" + heureFin +
            ", actif=" + actif +
            ", optional=" + optional +
            ", utilisateur=" + utilisateur +
            ", terrain=" + terrain +
            ", tarif=" + tarif +
            '}';
             }

当我尝试打印列表时出现错误

当尝试在我的 Controller 层次中显示此列表时,我的代码是:

  @GetMapping("/liste")
   public String showTerrains(Model model){

    //is like terrainsRepository.findAll()
    terrains=metierTerrain.showTerrain();
    System.out.println("voici la liste des terrains"+terrains);

  //  System.out.println( "voici la personne qui a ajouté le 
    terrain"+terrain.getUtilisateur() );
    model.addAttribute("terrains", terrains);


    return "terrains/listeTerrains";
}

我确信错误来自地形类中的映射,但不知道为什么以及如何修复它

@Entity(name = "terrains")
public class Terrain {
@ManyToOne
@JoinColumn(name = "id_utilisateur")
private Utilisateur utilisateur;}

您可以看到带有我的错误的图像 error

hier 是带有我的数据库的图像 data base eer

如果您能为我的问题提供解决方案,我将非常感激 预先感谢您

最佳答案

StackOverflowError是因为你(隐含地)调用 Utilisateur#toString来自Terrain#toString那个电话Utilisateur#toString那个电话Terrain#toString那个电话Utilisateur#toString那个电话Terrain#toString ...

编辑;它不是Terrain但是Reservation正如下面评论中所说。

关于java - 为什么出现java.lang.StackOverflowError : null when I try to print my entity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51724750/

相关文章:

java - HTTP 403 禁止 - Auth JASS Spring Camel

spring - SecurityContextHolder.getContext() 在 AspectJ 类中不起作用

spring - 如何使用 Spring 安全性和 Spring 安全性对象中的属性限制对 URL 的访问?

java - 更改一笔交易中的实体字段

spring - 如何使用 Spring Data JPA 和 Spring Security 实现 AuditorAware?

Java流创建对象并比较

java - Xamarin Java.Lang.Object 创建效率低下

java - 如何在 java 中使用 org.json.JSONObject 将值设置为 null?

java - Hibernate:我需要 flush() 吗?

Java - 如何关闭重置由我的应用程序初始化的套接字并即时重新打开它?在 TCP 或 UDP 中