请注意,此代码可以与普通Spring一起使用,但不能与Sping Boot (v1.3.3),是不是有什么我错过了,因为这是从一个Spring的应用程序,工程导入.下面的代码来自Sping Boot 应用程序
@Entity
@Table(name="project")
public class Project implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id")
private int id;
@Column(name="teamId")
private int teamId;
//private String Rentabiliteit;
@Column
//@Index(name="IProject_status",columnNames="Status")
private String status;
@Column
//@Index(name="IProject_naam",columnNames="Naam")
private String naam;
//public Prototype m_Prototype;
//public Team m_Team;
}
SQL
CREATE TABLE IF NOT EXISTS `project` (
`id` int(11) NOT NULL,
`teamId` int(11) DEFAULT NULL,
`status` varchar(255) DEFAULT NULL,
`naam` varchar(255) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=43 DEFAULT CHARSET=latin1;
错误
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:
Unknown column 'project0_.team_id' in 'field list'
编辑:应用程序。YML
spring:
mvc:
view:
prefix: /WEB-INF/jsp/
suffix: .jsp
datasource:
url: jdbc:mysql://localhost:3306/oxyplast
username: oxyplastuser
password: oxyplastuserpw
jpa:
properties:
hibernate:
current_session_context_class: org.springframework.orm.hibernate4.SpringSessionContext
namingStrategy: org.hibernate.cfg.DefaultNamingStrategy
7条答案
按热度按时间yrwegjxp1#
自Spring Boot1.***
从1开始。4,由于切换到Hibernate 5,命名策略已更新为
SpringPhysicalNamingStrategy
,应该非常接近1。3个默认。参见:
上一版本
Sping Boot 提供
ImprovedNamingStrategy
作为默认命名策略,这使得Hibernate搜索team_id
列(从int teamId
字段推断)。由于表中不存在此列,因此这就是错误的原因。Hibernate文档:改进的命名策略,更喜欢嵌入下划线而不是混合大小写的名称
你有两个选择
1.显式提供列名为
@Column(name="teamId")
。在早期的 Boot 版本中曾经有一个bug,现在没有了。1.更改Sping Boot 属性中的命名策略,告诉它使用
EJB3NamingStrategy
,它不会将camelCase转换为snake_case,而是保持原样。vq8itlhq2#
如果你使用Sping Boot 2。0.2和Hibernate 5。3.4然后设置以下属性将修复此问题。
ac1kyiln3#
下面的策略对我很有效
xxls0lw84#
最新版本:
本课
需要扩展并添加到hibernate属性中。
这里是一个完整的工作版本
在配置数据源时,应该像这样将它链接到hibernate。
下面是datasource config完整工作版本
mctunoxg5#
这对我来说是一个Spring Boot 开始。4.0和hibernate entitymanager 4.3.8.Final
应用程序。属性
spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.物理命名策略标准实施
g9icjywg6#
application.properties
上述属性为我工作。休眠4.3.11.最终 Spring Boot 1.4.2.RELEASE
c9x0cxw07#
Spring Boot 3