使用@Formula进行春季宠物诊所增强

时间:2016-04-08 00:49:41

标签: java spring hibernate

我添加了一种方式来向所有者收取访问费用,并标记已经支付了历史悠久的Spring Pet Clinic项目的访问次数。现在,我希望列出在其帐户中过期的所有者列表。我遇到的问题是所有者表:

CREATE TABLE owners (
  id         INTEGER IDENTITY PRIMARY KEY,
  first_name VARCHAR(30),
  last_name  VARCHAR_IGNORECASE(30),
  address    VARCHAR(255),
  city       VARCHAR(80),
  telephone  VARCHAR(20)
);

与访问表无关:

CREATE TABLE visits (
  id          INTEGER IDENTITY PRIMARY KEY,
  pet_id      INTEGER NOT NULL,
  visit_date  DATE,
  description VARCHAR(255),
  price       NUMERIC(5,2),
  payment_due DATE,
  billed      BOOLEAN,
  paid        BOOLEAN
);

保留价格和截止日期。如果我可以使用@Formula注释,我想我会全部设置,但当我尝试从Owner类运行SQL查询时如下:

@Formula("(SELECT MAX(price) FROM visits)")
private int balance;

我收到错误:

WARN  SqlExceptionHelper - SQL Error: -5501, SQLState: 42501
ERROR SqlExceptionHelper - user lacks privilege or object not found: OWNER0_.PRICE
WARN  warn - Handler execution resulted in exception: org.springframework.dao.InvalidDataAccessResourceUsageException: could not prepare statement;... 

我想做一个复杂的SQL语句,但我甚至无法让上面的简单语句工作。任何帮助@Function注释工作(或替代解决方案)都会有所帮助。

1 个答案:

答案 0 :(得分:1)

您可能需要指定price的来源,例如@Formula("(SELECT MAX(v.price) FROM visits v)")