我有两个实体
@Entity
@Table(name = "view_a")
public class A extends BaseStringIdTableClass
@Entity
@Table(name = "view_b")
public class B extends BaseStringIdTableClass
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class BaseStringIdTableClass implements Serializable {
@Id
private String id;
在数据库中我有两个视图
select * from view_a
|ID|ColumnA|....
|34222|some Value|....
select * from view_b
|ID|ColumnB|...
|34222|lla lla|...
因此我在数据库中有不同的看法。但是这个不同视图中的行具有相同的 ID。
现在我尝试使用标准 CRUD 存储库读取实体。
A a = aRepository.findById("34222").get();
B b = bRepository.findById("34222").get();
在这种情况下,我找不到实体 b。如果我交换两行代码,我找不到实体 a。
我认为持久性上下文可以一次只包含一个特定 ID 的实体?这是正确的吗。我能做什么?
存储库定义
public interface ARepository extends JpaRepository<A, String>, QuerydslPredicateExecutor<A> {
public interface BRepository extends JpaRepository<B, String>, QuerydslPredicateExecutor<B> {
睡一晚总是有帮助的......首先对我最初的不完整问题感到抱歉。
问题/错误是两个实体都扩展了相同的抽象类。在这个抽象类中定义了 ID。
在此识别后修复很容易。其中一个实体没有扩展我的抽象类,而是定义了他自己的 id。现在它起作用了......
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句