Java 冬眠龙目羚

Java 冬眠龙目羚,java,hibernate,code-generation,lombok,Java,Hibernate,Code Generation,Lombok,这可能吗?没有看到过太多关于它的讨论。我从未尝试过Hibernate的Lombok,但我不明白它为什么不起作用。 另外,请看这里: 另外,请明确提及Hibernate。当然!根据我的经验,它工作得很好。下面是一个示例实体: @Entity @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) public class PingerEntity { // ID @Id @Getter @Setter @Gen

这可能吗?没有看到过太多关于它的讨论。

我从未尝试过Hibernate的Lombok,但我不明白它为什么不起作用。 另外,请看这里:


另外,请明确提及Hibernate。

当然!根据我的经验,它工作得很好。下面是一个示例实体:

@Entity
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class PingerEntity {
    // ID
    @Id
    @Getter
    @Setter
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;


    // USER
    @Getter
    @Setter
    @ManyToOne(fetch = FetchType.LAZY, optional = false)
    private UserEntity user;


    // URL
    @Getter
    @Setter
    @Basic(optional = false)
    private String url;


    /**
     * The number of seconds between checks
     */
    @Getter
    @Setter
    @Basic(optional = false)
    private int frequency; 


    @Getter
    @Setter
    @Basic(optional = false)
    @Enumerated(EnumType.STRING)
    public MonitorType monitorType;
}

您还可以将它与@Data一起使用(而且它可以工作!)


一个简单的例子<代码>库.java:

@Data
@NoArgsConstructor // JPA
@Entity
@Table(name = "libraries")
public class Library {

  @Id
  @GeneratedValue
  private Long id;

  @OneToMany(cascade = CascadeType.ALL)
  @EqualsAndHashCode.Exclude
  // This will be included in the json
  private List<Book> books = new ArrayList<>();

  @JsonIgnore
  public void addBook(Book book) {
    books.add(book);
    book.setLibrary(this);
  }
}
@Data
@NoArgsConstructor // JPA
@Entity
@Table(name = "books")
public class Book {

  @Id
  @GeneratedValue
  private Long id;

  @NotBlank
  private String title;

  @ManyToOne
  @JoinColumn(name = "library_id") // Owning side of the relationship
  @EqualsAndHashCode.Exclude
  @JsonIgnore // Avoid infinite loops
  private Library library;
}

如果使用数据,则不必在每个字段上放置Getter和Setter。您可能还想指定EqualsAndHashcode(of={“id”}@RoelSpilker Yes),但要小心具有OneToMany和manytone的实体,因为lombok的ToString将生成一个无限循环。这就是我要查找的循环,我对其中一个实体有一个无限循环,这导致了StackOverflower错误。谢谢你的提示@qwertzguy:请您进一步详细说明您的上述回复。我没有领会你的意思。@ecdhe基本上有一个实体链接到另一个实体,而它本身又链接回第一个实体。然后,他们会反复调用彼此的字符串。我在@Data annotation和hibernate方面遇到了问题。第一个问题是hashCode()生成的方法,hibernate无法创建entitry。另一个在case model cantains list或set中使用toString()方法。到目前为止一切都很好#ToString仅当模型仅包含普通数据字段时
@Data
@NoArgsConstructor // JPA
@Entity
@Table(name = "books")
public class Book {

  @Id
  @GeneratedValue
  private Long id;

  @NotBlank
  private String title;

  @ManyToOne
  @JoinColumn(name = "library_id") // Owning side of the relationship
  @EqualsAndHashCode.Exclude
  @JsonIgnore // Avoid infinite loops
  private Library library;
}