【发布时间】:2021-04-19 18:58:32
【问题描述】:
我有一个实体类定义为:
@Entity
@Table(name = "some_table")
@NamedQueries({
@NamedQuery(name = "SomeTable.getSomeTableForAmount",
query = "select x from SomeTable x where :amount >= x.startingAmount AND :amount <= x.endingAmount " +
"AND product = :product"
)
})
@Getter
@Setter
public class SomeTable {
@Id
private String id;
private BigDecimal startingAmount;
private BigDecimal endingAmount;
private BigDecimal minimumDueAmount;
private Product product;
}
该类的 DAO 如下所示:
public class SomeTableDao extends AbstractDAO<SomeTable> implements ISomeTableDao {
@Inject
public SomeTableDao(SessionFactory sessionFactory) {
super(sessionFactory);
}
@Override
public Optional<SomeTable> getSomeTableForAmount(BigDecimal amount, Product product) {
return namedQuery("SomeTable.getSomeTableForAmount")
.setParameter("amount", amount)
.setParameter("product", product)
.setMaxResults(1)
.list()
.stream()
.map(s -> (SomeTable) s)
.findFirst();
}
}
在从资源执行此操作时,我遇到异常声明 Named query not known: SomeTable.getSomeTableForAmount
资源方法用@UnitOfWork注解。
我还注意到查询没有添加到NamedQueryRepository 中的namedQueryDefinitionMap。
【问题讨论】:
-
也许你想用
namedQuery("SomeTable.getSomeForAmount")代替namedQuery("SomeTable.getMinimumDueForAmount") -
@SternK 这个名字真的很重要吗?因为我已经在我的实体类中将其添加到
@NamedQueries中。 -
还尝试在所有地方更改名称,但不起作用。我注意到查询没有添加到 NamedQueryRepository 中的 namedQueryDefinitionMap。
-
请出示您的方法
namedQuery定义。
标签: java hibernate dropwizard