龙目岛与休眠

jav*_*guy 28 java code-generation hibernate lombok

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

wma*_*ura 27

当然!从我的经验来看,它很有效.这是一个示例实体:

@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;
}
Run Code Online (Sandbox Code Playgroud)

  • @RoelSpilker是的,但要注意具有OneToMany和ManyToOne的实体,因为lombok的ToString会产生无限循环. (18认同)
  • 如果使用Data,则不必在每个字段上放置Getter和Setter.您可能还想指定EqualsAndHashcode(of = {"id"}) (14认同)
  • 那就是我正在寻找的那个,我对这些实体之一进行了无限循环,并导致了计算器溢出错误。谢谢你的提示! (2认同)
  • @ecdhe 基本上有一个实体链接到另一个实体,而它本身又链接回第一个实体。然后他们将每个重复调用彼此的 toString 。 (2认同)

Mar*_*zak 13

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

@Entity
@Data
public class Customer {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;
    private String firstName;
    private String lastName;

}
Run Code Online (Sandbox Code Playgroud)

  • 我遇到了@Data annotation和hibernate的问题.第一个问题是使用hashCode()生成的方法,hibernate只是无法创建权限.在案例模型中使用toString()方法的其他一个包含Lists或Sets.到目前为止,#Setter #Getter非常好.#ToString仅在模型仅包含普通数据字段时才会出现 (7认同)

Luc*_*sio 9

我从未尝试过使用Hibernate的Lombok,但我不明白为什么它不应该工作.另外,请看一下:http://groups.google.com/group/project-lombok/browse_thread/thread/294bd52d9d8695df/7bc6b0f343831af1?lnk=gst&q=hibernate#7bc6b0f343831af1

此外,Lombok项目发布说明明确提到了Hibernate.