【发布时间】:2017-11-28 10:56:15
【问题描述】:
我尝试在我的工作中使用 CrudRepository。而当sql请求出现在我的日志上时,就是不正常了。
真正的表是'AllDatabase.AllUserInfo',但生成的sql请求看起来像'all_user_info alluresinf0_',无法使用。
我一直在互联网上,似乎没有人遇到我的问题(据我所知)。如果我的项目中缺少某些配置,请有人告诉我。
我在 Intellij Idea 上使用 'Spring Initializer' 并选择了 'Web' 、 'JPA' 、 'MySQL' 。这些是我的代码。
这是我的仓库
package com.chuchurest.proj.Repository;
import com.chuchurest.proj.Entity.AllUserInfo;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* Created by slimshady23 on 6/25/2017 AD.
*/
@Transactional
@Repository
public interface UserRepository extends CrudRepository<AllUserInfo,String> {
}
这里是“AllUserInfo”实体
package com.chuchurest.proj.Entity;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Id;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import java.io.Serializable;
/**
* Created by slimshady23 on 6/23/2017 AD.
*/
@Entity
@Table(name = "AllUserInfo")
public class AllUserInfo {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private String Id;
@Column(name="username")
private String Username;
@Column(name="password")
private String Password;
@Column(name="email")
private String Email;
@Column(name="phone")
private String Phone;
@Column(name="rating")
private Integer Rating;
@Column(name="skill")
private Integer Skill;
@Column(name="description")
private String Description;
public String getId() {
return Id;
}
public void setId(String id) {
Id = id;
}
public String getUsername() {
return Username;
}
public void setUsername(String username) {
Username = username;
}
public String getPassword() {
return Password;
}
public void setPassword(String password) {
Password = password;
}
public String getEmail() {
return Email;
}
public void setEmail(String email) {
Email = email;
}
public String getPhone() {
return Phone;
}
public void setPhone(String phone) {
Phone = phone;
}
public Integer getRating() {
return Rating;
}
public void setRating(Integer rating) {
Rating = rating;
}
public Integer getSkill() {
return Skill;
}
public void setSkill(Integer skill) {
Skill = skill;
}
public String getDescription() {
return Description;
}
public void setDescription(String description) {
Description = description;
}
}
这就是我调用 save() 方法的方式
package com.chuchurest.proj.Service;
import com.chuchurest.proj.DAO.UserInfoDAO;
import com.chuchurest.proj.Entity.AllUserInfo;
import com.chuchurest.proj.Repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* Created by slimshady23 on 6/24/2017 AD.
*/
@Service
public class AppService {
@Autowired
private UserRepository userRepository;
public void PerformRegister(AllUserInfo userinfo)
{
userRepository.save(userinfo);
}
}
这里是 Application.properties
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/AllDatabase
spring.datasource.username=root
spring.datasource.password= ******
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQLDialect
spring.jpa.properties.hibernate.id.new_generator_mappings = false
spring.jpa.properties.hibernate.format_sql = true
spring.jpa.show-sql= true
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
【问题讨论】:
-
看看这个似乎相关的问题stackoverflow.com/questions/39162976/…
-
欢迎堆栈溢出。请避免使用图片展示代码。
-
如果 Hibernate / Spring 提出了
all_user_info的 TABLE 名称,尽管您明确指定了@Table(name=...),那么它违反了 JPA 规范。 JPA 规范明确指出,如果指定了表名,那么这就是应该使用的......并且不允许提供者在感觉像时将下划线符号放在那里
标签: java mysql spring intellij-idea spring-data-jpa