0

我有表A:

@Entity
@Table(name = "A")
public class A{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(nullable = false, updatable = false)
    private Long id;

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "message_id")
    private Message;
}

我有一张桌子消息:

@Entity
@Table(name="message")
@Getter
@Setter
public class Message{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(nullable = false, updatable = false)
    private Long id;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "account_id", foreignKey = @ForeignKey(name = "FK_account_to_message"))
    private Account account; //and then search by Account.id
}

在我的服务中,我通过以下方式获取所有 A 对象:

List<A> aObjects = ARepository.findByMessage_Account_Id(user.getId())

所以我想获取所有具有这样字段的A对象,这些字段具有这样的字段MessageMessageAccountAccount.id == user.getId()

现在我有了其他类型的实体A——Message与柱子)。所以我必须在表中存储新对象,但有空列但有附加列-> ->目前这是查找所有对象的参数()问题是如何/在哪里存储列中不同的对象(空,与消息表)。MessageMessageAAMessageuser_idAARepository.findByMessage_Account_Id(user.getId())AMessage

我考虑过Single Table InheritanceDiscriminator value但在这种情况下,当我想A通过 user_id 查找所有对象时,我必须准备一个更大的选择,例如:get all A objects from A where A.Message.Account.id = user_id or A.user_id = user_id

这是一个好方法吗?或者也许我应该使用不同的东西?

4

0 回答 0