0
我們使用彈簧數據jpa可用於spring boot 1.5.3。在存儲庫類中,我想從表中只提取幾列,包括來自子表(這是onetomany映射)的數據,所以我寫了一個查詢方法。 但該查詢方法不工作,並在日誌中看到下面的錯誤/警告春季數據jpa查詢中的子屬性不起作用
SQL Error: -104, SQLState: 42601
DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=.;ARRAY + - ROW NEXTVAL PREVVAL NEXT PREVIOUS (<INTEGER>, DRIVER=4.19.26
這裏是我的父實體:
@Entity
@Table(name = "parent_table")
public Class Parent {
// no-param constructor
Parent(int id, String name, Child childData) {
// assign these accordingly
}
// id, name, and couple of other mappings
@OneToMany(mappedBy = "parent", fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval=true)
private Set<Child> childData;
}
實體Child:
@Entity
@Table(name = "child_table")
public class Child {
// id and couple of other columns
@ManyToOne (fetch = FetchType.LAZY)
@JoinColumn(name = "p_id", nullable = false, insertable = false, updatable = false)
private Parent parent;
}
和存儲庫是在這裏:
@Transactional
public interface ParentRepository extends CrudRepository<Parent, Integer> {
@Query("select new Parent(id, name, p.childData) from Parent p where p.id=?1")
public Parent findOnlyChildDataById(final int id);
}
感謝您的答覆。但是,在這裏我不需要父母的所有列。所以,我用jpa查詢編寫了自定義方法。 – Pawan
如果您需要一個沒有某些屬性的實體,那麼這不是一個實體,而是一個[DTO](https://en.wikipedia.org/wiki/Data_transfer_object),您需要另一個[技術](https:// stackoverflow。 com/a/42946268)來處理它。 – Cepr0
謝謝。但是,我已經在使用類似的方法在下面的回購工作正常。 @Query( 「選擇從父p其中p.application =?1新的父(ID,姓名,應用程序,anothercolumn)」) 公開名單 findAllByApplication(字符串應用程序) 我只得到我在哪裏的問題,包括子查詢中的屬性。 –
Pawan