JPA self referenced

Ich habe in meinem Projekt eine Klasse

@Entity
@Table(name="user")
public class User implements IEntity {
       @Id
       @GeneratedValue(strategy = GenerationType.IDENTITY)
       @Column(name = "id")
       private int id;
       
       @ManyToOne              
//       @JoinColumn(name = "created_by", referencedColumnName = "id")
       private User created_by;
       
       @OneToMany(mappedBy = "created_by")
       private Collection<User> created_children;

       @Column(name="created_at")
       @Temporal(TemporalType.TIMESTAMP)       
       private Date createdAt;
       
       @ManyToOne              
       private User modified_by;
       ...

Ich habe es mit den auskommentierten

      @JoinColumn(name = "modified_by", referencedColumnName = "id")
       @Column(name = "modified_by")

bzw. den entsprechenden für created_by ausprobiert. Ich habe es auch ohne JoinColumn bzw Column probiert allerdings alle drei Sachen führen zu einem Fehler z.B.

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'CREATED_BY_id' in 'field list'

created_by / modified_by (so stehen sie in der Tabelle) sollen in der Klasse wegen dem Unterstrich createdBy bzw. modifiedBy heisen. Created / Modified darf null sein oder sich selbst referenzieren. Die entpsrechenden Spalten in der Datentabelle können entsprechend Null aufnehmen.

Falls es für euch wichtig ist hier noch die Speicherfunktion der DAO

       public void save(IEntity entity, User user) {
              if (_find(User.class, entity.getId()) == null ) {
                 entity.setCreatedBy(user);
                 entity.setCreatedAt(new Date());
                     
                 _insert(entity);
              } else {
                 entity.setModifiedBy(user);
                 entity.setModifiedAt(new Date());
                     
                 _update(entity);
              }
       }  

Kann mir bitte einer sagen wie die Entity - Klasse korrekt lauten müsste?

P.S.
Ja ich weis evtl. müsste ich die speicherfunktion noch umschreiben, weil wenn er sich selbst referenziert muss ggf. erstmal die neue ID der gespeicherten Entity erhalten, oder kann dieses auch die JPA / EclipseLink übernehmen?

Hey Roy,

wie hastn das gelöst? Ich habe auch gerade diese Situation, dass eine Entität auf sich selbst referenziert.
Geht das ohne weiteres mit der @ManyToOne Annotation oder muss ich mir da was für schreiben?

viele Grüße
Steven