【发布时间】:2021-02-16 13:51:33
【问题描述】:
我正在尝试为现有数据库进行 JPA 映射。我无法真正改变现有的结构。
我设法让它工作,但 Intellij 告诉我,即使它工作,某些列也不存在。所以我不知道是否有更好的方法可以做到这一点,还是 Intellij 不支持所有用例。
我为这个问题简化了我的映射和表格。 具有主复合键的 2 个表是:
Table_A
some_id_a
some_seq_a
Table B
some_id_a
some_seq_a
some_seq_b
而我的映射是:
@Data
@Entity(name="Table_A")
public class TableA {
@EmbeddedId
private Key key;
@OneToMany
@JoinColumn(name = "someIdA")
@JoinColumn(name = "someSeqA")
private List<TableB> tableBs;
@Data
@Embeddable
public static final class Key implements Serializable {
private String someIdA;
private long someSeqA;
}
}
@Data
@Entity(name="Table_B")
public class TableB {
@EmbeddedId
private Key key;
@Data
@Embeddable
public static final class Key implements Serializable {
private String someIdA;
private long someSeqA;
private long someSeqB;
}
}
就像我说的那样,它可以工作,但我在 Intellij 中有一个错误,说 @JoinColumn(name ="someIdA") @JoinColumn(name = "someSeqA") 不存在并且期待像 @JoinColumn(name ="some_id_a") @JoinColumn(name = "some_seq_a") 这样的东西。
按照 Intellij 告诉我的方式使用它,JPA 出现错误提示:表 [table_b] 包含由多个逻辑列名引用的物理列名 [some_id_a]:[some_id_a]、[someIdA]。
尽管有 Intellij,但我的映射还可以,但有更好的选择吗?
谢谢
【问题讨论】: