Jpa 从@OneToMany关系中获取最后一条记录

Jpa 从@OneToMany关系中获取最后一条记录,jpa,eclipselink,Jpa,Eclipselink,我有几个实体有@manytone和@OneToMany关系,问题是我正在寻找一种方法,在不加载列表中的所有记录的情况下,从关系的@OneToMany一侧插入最后一条记录,实际上,我正在将最后一条记录保存在类B中的@onetomone关系中,但这会与FK约束产生太多冲突。以下是其外观的摘录: public class ClassA { @Id public Long id; @ManyToOne public ClassB classB; @Temporal(java

我有几个实体有@manytone和@OneToMany关系,问题是我正在寻找一种方法,在不加载列表中的所有记录的情况下,从关系的@OneToMany一侧插入最后一条记录,实际上,我正在将最后一条记录保存在类B中的@onetomone关系中,但这会与FK约束产生太多冲突。以下是其外观的摘录:

public class ClassA {
   @Id
   public Long id;
   @ManyToOne
   public ClassB classB;
   @Temporal(javax.persistence.TemporalType.TIMESTAMP)
   public Date startDate;
}

public class ClassB {
   @Id
   public Long id;
   @OneToMany(mappedby = "classB", fetch = FetchType.LAZY)
   public List<ClassA> classAList = new ArrayList<>();
   @OneToOne
   public ClassA lastClassA; // Generates a bidirectional FK, and unable the entity for deletion.
}

我想你忘记了其中的一个原则:永远不要改变一个获胜的球队。为什么要改变一个好的JPA兼容解决方案?嗨@AndreiI,你到底是什么意思?在这种情况下,什么是成功的团队?您拥有的解决方案已经起作用了,它是“成功的团队”。是()OneToOne方法还是JPQL?因为使用()OneToOne关系,必须移除至少一个FK才能使其工作,实体会被FK卡住,而JPQL似乎是最佳选择,因为它可以节省磁盘空间(实体中少1个字段)以交换到数据库的额外往返。看来我自己回答了。我不确定的是,是否有其他方法可以在不涉及()OneToMany关系的情况下执行相同的操作,我确定必须有人处理这样的场景,因为这是非常常见的。我的意思是onetomone方法是一个很好的工作解决方案。不要试图节省空间,因为这不是您通常遇到的空间问题,而是性能问题。我认为这个解决方案没有任何问题。也不要试图过度设计这个简单的问题。
Select a from ClassA a where a.startDate = (Select MAX(b.startDate) from ClassA b where ClassB.id=:classBId)