我创建了一个名为user的模型类:
SET hive.exec.compress.intermediate=true;
SET hive.exec.compress.output=true;
SET mapred.output.compression.type=BLOCK;
控制器类:
@Entity
@Table(name = "user")
public class User implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@Column(name = "username")
private String username;
@Column(name = "created", columnDefinition="TIMESTAMP")
private LocalDateTime created;
@Column(name = "updated", columnDefinition="TIMESTAMP")
private LocalDateTime updated;
}
我的属性文件:
@RestController
@RequestMapping("/user")
public class UserController {
@RequestMapping(method = RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public List<User> getUserList(){
System.err.println("Get user list");
List<User> all = userRepository.findAll();
System.err.println("all = " + all);
return all;
}
}
在邮递员中我发送一个get请求到:localhost:8080 / user,第一个系统错误显示... hibernate显示sql,但我没有得到用户。我试过传回一个字符串,它正常工作。如果我想要用户: spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase? serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.format_sql=true
它只是加载......但什么都不做。在存储库文件中,我使用jparepository中的extends。
有什么问题?谢谢你的帮助!
答案 0 :(得分:0)
没有来自Spring和/或Hibernate的日志很难猜测,但我会根据您提供的代码发布一些可能的原因:
您是否在8.0版中实际使用MySQL Connector / J?在旧版本(5.1)中,正确的驱动程序类为com.mysql.jdbc.Driver
,8.0将其更改为com.mysql.cj.jdbc.Driver
。
您是否在构建工具(maven或gradle)中明确定义了MySQL Connector / J依赖项? Spring默认不会把它拉进去,只推荐一个版本。
您的JDBC URI中有一个额外的空格,并不确切知道这是否有用。
我建议在实体中使用java.sql.Timestamp
类作为时间值,而不是Java 8 DateTime
类型。 Java 8类型导致ORM解决方案存在很多问题。您可以直接在Java 8 Instant
对象和Timestamp
对象之间进行转换。这些将作为数字(例如bigint
)存储在您的数据库中,因此不再需要列定义。