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
As it was mentioned in comments above, delombok helps.
In case of maven build it would be:

```
<plugin>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok-maven-plugin</artifactId>
    <version>${lombok.version}.0</version>
    <executions>
        <execution>
            <id>delombok</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>delombok</goal>
            </goals>
            <configuration>
                <formatPreferences>
                    <javaLangAsFQN>skip</javaLangAsFQN>
                </formatPreferences>
                <verbose>true</verbose>
            </configuration>
        </execution>
        <execution>
            <id>test-delombok</id>
            <phase>generate-test-sources</phase>
            <goals>
                <goal>testDelombok</goal>
            </goals>
            <configuration>
                <verbose>true</verbose>
            </configuration>
        </execution>
    </executions>
</plugin>

```