Java Micronaut Data 生成假列

问题描述 投票:0回答:1

我有两个Java实体Obj和Trt,用于DB obj(ID,ID_TRT,...)和trt(ID,...)中的两个表,定义如下:

@MappedEntity("obj")
public class ObjEntity{

...
private TrtEntity trt;
...

@Nullable
    @MappedProperty("ID_TRT")
    @JoinColumn(name ="ID_TRT")
    @Relation(value = Relation.Kind.MANY_TO_ONE)
    public TraitementEntity getTrt() {
        return trt;
    }

    public void setTrt(final TrtEntity trt) {
        this.trt= trt;
    }
...
}


@MappedEntity("trt")
public class TrtEntity{

private Long id;
private List<ObjEntity> objs;
....
@Relation(value = Relation.Kind.ONE_TO_MANY, mappedBy = "trt", cascade = { Relation.Cascade.ALL })
    public List<ObjEntity> getObjs() {
        return objs;
    }
...
}

在类中,我们调用方法 ObjRepository.findAll(...),该方法应执行以下 SQL 查询:

select ID, ID_TRT, .... from obj where ...

有时我们会收到此查询,但有时我们会:

select ID, TRT_ID, .... from obj where ...

问题是,在 Micronaut Data 生成的查询中,ID_TRT 变成了 TRT_ID

有什么想法吗?

java orm micronaut micronaut-data
1个回答
0
投票

我找到了解决方案:

我在 ObjEntity 中添加了实体作为 trt 的前缀,并在 TrtEntity 中添加了 obj 的前缀:

@MappedEntity("obj")
public class ObjEntity{

...
private TrtEntity trtEntity;
...

@Nullable
    @MappedProperty("ID_TRT")
    @JoinColumn(name ="ID_TRT")
    @Relation(value = Relation.Kind.MANY_TO_ONE)
    public TraitementEntity getTrtEntity() {
        return trtEntity;
    }

    public void setTrt(final TrtEntity trtEntity) {
        this.trtEntity= trtEntity;
    }
...
}


@MappedEntity("trt")
public class TrtEntity{

private Long id;
private List<ObjEntity> objsEntity;
....
@Relation(value = Relation.Kind.ONE_TO_MANY, mappedBy = "trt", cascade = { Relation.Cascade.ALL })
    public List<ObjEntity> getObjsEntity() {
        return objsEntity;
    }
...
}
© www.soinside.com 2019 - 2024. All rights reserved.