は、私は小さな春ブーツアプリと連携し、私はコンパイル時に私はエラーorg.hsqldb.HsqlException: user lacks privilege or object not found: USER0_.NAME
を取得します。私は前と同じエラーがあり、今は最小限のコードに再現しています。このプロジェクト構造、org.hsqldb.HsqlException:ユーザーが権限を持たないか、オブジェクトが見つかりません:USER0_.NAME
エラーがコントローラから方法findAll()
によってトリガされ、エラー・スタックの
@Controller
public class UserController {
@Autowired
private UserService userService;
@GetMapping(value = "/")
public String index() {
return "redirect:/users";
}
@GetMapping(value = "/users")
public String showAllUsers(Model model) {
// triggered by this line
model.addAttribute("users", userService.findAll());
return "list";
}
}
重要な部分は、
org.springframework.dao.InvalidDataAccessResourceUsageException: could not prepare statement; SQL [select user0_.id as id1_1_, user0_.name as name2_1_ from user user0_]; nested exception is org.hibernate.exception.SQLGrammarException: could not prepare statement
......
Caused by: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: USER0_.NAME in statement [select user0_.id as id1_1_, user0_.name as name2_1_ from user user0_]
.........
Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: USER0_.NAME
ありますエンティティクラスは、提供され
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column
private String name;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof User)) return false;
User user = (User) o;
if (getId() != user.getId()) return false;
return getName().equals(user.getName());
}
@Override
public int hashCode() {
int result = (int) (getId()^(getId() >>> 32));
result = 31 * result + getName().hashCode();
return result;
}
}
設けリポジトリディレクトリのインターフェイス、
public interface UserRepository extends CrudRepository<User, Long> {
}
ユーザコントローラクラスは、以前提供されます。必要に応じてさらに情報を提供することができます。私の意図は、すべてのユーザーの値をJSPページに渡します。私は今、すべてのユーザー値を持っていない、アプリがフォームからユーザー情報を取得し、今では何も持っていない、言及する必要があります。
それはコメントから尋ねAS、サービス・インターフェースとクラッセが提供され、
public interface UserService {
List<User> findAll();
User findById(Long idx);
void save(User user);
void delete(Long idx);
}
サービスクラスの実装、
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserRepository userRepository;
@Override
public List<User> findAll() {
return (List)userRepository.findAll();
}
@Override
public User findById(Long idx) {
return userRepository.findOne(idx);
}
@Override
public void save(User user) {
userRepository.save(user);
}
@Override
public void delete(Long idx) {
userRepository.delete(idx);
}
}
私はHSQL
データベースとアプリケーションのプロパティを使用するが設けられており、
server.port=8081
spring.mvc.view.prefix:/WEB-INF/jsp/
spring.mvc.view.suffix:.jsp
spring.thymeleaf.cache=false
spring.application.name=Bootstrap Spring Boot
spring.thymeleaf.enabled=true
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.devtools.restart.additional-paths=.
security.basic.enabled=true
security.user.name=john
security.user.password=123
spring.datasource.url=jdbc:hsqldb:file:db/registration;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driver-class-name=org.hsqldb.jdbc.JDBCDriver
spring.datasource.username=testuser
spring.datasource.password=testpassword
server.error.path=/error
server.error.whitelabel.enabled=false
# Keep the connection alive if idle for a long time (needed in production)
spring.datasource.testWhileIdle=true
spring.datasource.validationQuery=SELECT 1
# ===============================
# = JPA/HIBERNATE
# ===============================
# Use spring.jpa.properties.* for Hibernate native properties (the prefix is
# stripped before adding them to the com.boot.registration.entity manager).
# Show or not log for each sql query
spring.jpa.show-sql=true
# Hibernate ddl auto (create, create-drop, update): with "update" the database
# schema will be automatically updated accordingly to java entities found in
# the project
spring.jpa.hibernate.ddl-auto=create
# Allows Hibernate to generate SQL optimized for a particular DBMS
spring.messages.basename=validation
Update
Appearantly、サービス・インターフェースの動作の操作のいずれも、エラーの同じセットを提供します。私のようなコードを入れた場合、
@GetMapping(value = "/users")
public String showAllUsers(Model model) {
User user = new User();
user.setId(1L);
user.setName("Berlin");
userService.save(user);
// model.addAttribute("users", userService.findAll());
return "list";
}
が、私はまだ同じエラーを持っているCaused by: org.hsqldb.HsqlException: user lacks privilege or object not found: USER0_.NAME
は、ここでの問題は何ですか?
'UserServiceImpl'クラスを提供しますか? –
サービスは提供されていません。 – Arefe