我想從JPA以List<ProjectLevel<?>>
等通用方式命名查詢的結果列表。我需要這個,因爲我想以後再流。JPA以通用方式命名查詢getResultList()
ProjectLevel
是一個泛型類。
public abstract class ProjectLevel<T extends ProjectLevel>{
....
}
如建議的那樣添加ProjectLevel的子類。
@Entity
@Getter
@Setter
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@NoArgsConstructor(access = AccessLevel.PUBLIC)
@Table(uniqueConstraints = {
@UniqueConstraint(columnNames = {"businessAccountId", "id"})})
@NamedQueries({
@NamedQuery(name = "Project.findByProjectIdOrUUID",
query = "SELECT p FROM Project p WHERE (p.id = :id OR p.uuid = :id) and p.businessAccountId = :businessAccountId")
})
public class Project extends ProjectLevel {
private static final long serialVersionUID = 2167149510293504460L;
@Nonnull
private String customerUUID;
@Nonnull
@Enumerated(EnumType.STRING)
private Currency currency;
@Nonnull
@Enumerated(EnumType.STRING)
private ProjectType projectType;
@Nonnull
@Enumerated(EnumType.STRING)
private ContractType contractType;
@Nonnull
private String cityLocation;
private boolean locationPermission;
private boolean insuranceRequired;
}
我試過,但它給了我類型轉換錯誤,如
不兼容的類型:
List<ProjectLevel>
不能從getResultList轉換爲List<ProjectLevel<?>>
()線
public List<ProjectLevel<?>> findUUIDByNameorNumber(@Nonnull final String nameOrId,
@Nonnull final String businessAccountId) {
checkNotNull(nameOrId, "The nameOrId must not be null");
return (List<ProjectLevel<?>>)getEntityManager()
.createNamedQuery("ProjectLevel.findUUIDByNameOrId", ProjectLevel.class)
.setParameter("name", matchesFromBeginning(nameOrId))
.setParameter("businessAccountId", businessAccountId)
.getResultList();
}
任何幫助,將不勝感激。
請添加完整的錯誤信息(堆棧跟蹤,編譯器錯誤?) – GhostCat
@GhostCat更新我的問題 – Hiru
會'名單>'沒事的返回類型,或你絕對要'名單> '? –