2011-02-01 22 views

答えて

22

確かに!それは私の経験から素晴らしい作品です。ここでは例の実体だ:(!、それが動作します)

@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; 
} 
+10

あなたがデータを使用する場合は、各フィールドの上にゲッターとセッターを配置する必要はありません。 EqualsAndHashcode(of = {"id"})を指定することもできます。 –

+11

@RoelSpilkerはい、OneToManyとManyToOneを持つエンティティには注意してください。なぜなら、lombokのToStringは無限ループになるからです。 – qwertzguy

+1

これは私が探していたものです。これらのエンティティの1つに無限ループがあり、スタックオーバーフローエラーが発生しました。ヒントをありがとう! –

8

あなたは@Dataでもそれを使用することができます

@Entity 
@Data 
public class Customer { 

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

} 
+3

@Dataアノテーションと休止状態に問題がありました。 最初のproblmeはhashCode()で生成されたメソッドであり、hibernateはentitryを作成できませんでした。他のケースでは、toString()メソッドを使用して、リストまたはセットを保持することができます。 ちょうど#Setter#これまでのところ良い結果が得られました。 #ToStringは、モデルがプレーンデータフィールドのみを含む場合のみ – ekitru