Question: I have two entities with following relationShip (these entities are taken for example purpose only)

```
public class Entity
{
    public long ID { get; set; }
}

public class Doctor : Entity
{
    public string Name {get; set;}
    public string sprcialization { get; set;}
    public string Icollection<JrDoctor> childDoctors { get; set;}
}

public class JrDoctor : Entity
{
    public long? DoctorId { get; set;}
    public virtual Doctor Doctor { get; set;}

    public long? JuniorDoctorId { get; set;}
    [ForeignKey("JuniorDoctorId")]
    public virtual Doctor JuniorDoctor { get; set;}
}

```

this relationship in entityframework is creating an extra column Doctor\_Id in JrDoctor table. Why is it so? and how can I avoid it using data annotations.

Answer: 
Generally, no, it doesn't. The reason of that behavior is that Lombok is an annotation processor for javac but when the kotlin compiler runs it uses javac as well but with no annotation processing so this is why kotlin don't see declarations that wasn't yet generated.

The only workaround for now is to define strict compilation order: Java first and after that kotlin. Unfortunately this approach has great disadvantage: you can't use Kotlin code from Java in this case. To workaround it you may need multimodule project that may cause a lot of pain
There is a Kotlin compiler plugin for lombok. **It is still experimental** and it can be used with **Gradle** or **Maven**.

It only supports a hand full of annotations, including

* `@Getter`, `@Setter`
* `@NoArgsConstructor`, `@RequiredArgsConstructor`, and `@AllArgsConstructor`
* `@Data`
* `@With`
* `@Value`

Seem to work as expected. Unfortunately, they do not support the `@Builder` annotation but you can request to be added in [YouTrack](https://youtrack.jetbrains.com/issue/KT-46959)

See the [Lombok compiler plugin](https://kotlinlang.org/docs/lombok.html) in the kotlin documentation for more information.

Update 1
--------

The `@Builder` annotation ticket mentioned above has been fixed! The target version for the fix is `1.8.0-Beta`.