@Column注解无效

最近在使用spring boot中的集成jpa的时候,自动创建数据库中的表的时候,不管我的@Column(name="teacherClass")如何注解,最终在数据库中创建出来的字段都是teacher_class,感觉很奇怪,最终经过查询资料得到了一条信息。

Hibernate5的命名策略有过调整,”spring.jpa.hibernate.naming.strategy” 没效果了。

最终在spring boot中的application.properties里面添加了一句话,进行了配置。

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

 一下是我的验证的实体代码,最终经过运行程序测试,@Column问题已经解决了!


@Entity
@Table(name="teacher")
public class Teacher implements Serializable {
	
	private static final long serialVersionUID = 3129856851829040003L;
	
	private Integer id;
	private String teacherName;
	private String teacherPhone;
	private String teacherCardId;
	private College college;
	private List<Grade>  teacherClass = new ArrayList<Grade>();
	
	@ManyToOne
	@JoinColumn(name="college_c_id")
	public College getCollege() {
		return college;
	}
	public void setCollege(College college) {
		this.college = college;
	}
	
	
	@Id
	@GeneratedValue(generator="a_native")
	@GenericGenerator(name="a_native",strategy="native")
	@Column(name="teacherId")
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	@Column(name="teacherName")
	public String getTeacherName() {
		return teacherName;
	}
	public void setTeacherName(String teacherName) {
		this.teacherName = teacherName;
	}
	@Column(name="teacherPhone")
	public String getTeacherPhone() {
		return teacherPhone;
	}
	public void setTeacherPhone(String string) {
		this.teacherPhone = string;
	}
	@Column(name="teacherCardId")
	public String getTeacherCardId() {
		return teacherCardId;
	}
	public void setTeacherCardId(String teacherCardId) {
		this.teacherCardId = teacherCardId;
	}
	
	
	@ManyToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
	@JoinTable(name="teacher_class",
			joinColumns = {@JoinColumn(name = "t_id" ,referencedColumnName = "teacherId")},
		inverseJoinColumns = {@JoinColumn(name = "c_id",referencedColumnName = "gradeId")})
	
	public List<Grade> getTeacherClass() {
		return teacherClass;
	}
	public void setTeacherClass(List<Grade> teacherClass) {
		this.teacherClass = teacherClass;
	}
	
	@Override
	public String toString() {
		return "Teacher [id=" + id + ", teacherName=" + teacherName
				+ ", teacherPhone=" + teacherPhone + ", teacherCardId="
				+ teacherCardId + ", college=" + college + ", teacherClass=" + teacherClass + "]";
	}
}

 

 

package indi.backend.repository.entity; import jakarta.persistence.*; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import java.util.Date; import java.util.UUID; @Data @Builder @NoArgsConstructor @AllArgsConstructor @Entity @Table(name = "Users") public class Users { @Id @Column(columnDefinition = "uniqueidentifier") public UUID id; @Column(columnDefinition = "datetime2") public Date creationTime; @Column(columnDefinition = "nvarchar(max)") public String account; @Column(columnDefinition = "nvarchar(max)") public String password; @Column(columnDefinition = "bit") public Boolean enabled; @Column(columnDefinition = "datetime2") public Date lockStartTime; @Column(columnDefinition = "datetime2") public Date lockEndTime; @Column(columnDefinition = "nvarchar(max)") public String username; @Column(columnDefinition = "nvarchar(max)") public String avatar; @Column(columnDefinition = "nvarchar(max)") public String email; @Column(columnDefinition = "nvarchar(max)") public String phone; @Column(columnDefinition = "nvarchar(max)") public String sex; @Column(columnDefinition = "datetime2") public Date birthday; @Column(columnDefinition = "nvarchar(max)") public String address; @Column(columnDefinition = "datetime2") public Date lastActiveTime; @Column(columnDefinition = "int") public Integer permissionsLevel; @OneToOne(mappedBy = "user", cascade = CascadeType.ALL) private TokenPool tokenPool; } package indi.backend.repository.entity; import jakarta.persistence.*; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import java.util.Date; import java.util.UUID; @Data @Builder @NoArgsConstructor @AllArgsConstructor @Entity @Table(name = "TokenPool") public class TokenPool { @Id @Column(columnDefinition = "uniqueidentifier") public UUID id; @Column(columnDefinition = "datetime2") public Date creationTime; @Column(columnDefinition = "datetime2") public Date expiredTime; @Column(columnDefinition = "bit") public Boolean longTerm; @OneToOne @JoinColumn(name = "userId", nullable = false) private Users user; } 根据这两个实体优化public String login(String account, String password) { Users users = usersRepository.findByAccountAndPassword(account, cryptoUtil.sha256(password)).orElseThrow(() -> new RuntimeException("用户名或密码错误")); Date expiredTime = Date.from(LocalDateTime.now().plusSeconds(3600).atZone(ZoneId.systemDefault()).toInstant()); users.setLastActiveTime(expiredTime); usersRepository.save(users); TokenPool tokenPool = tokenPoolRepository.findByUserId(users.getId()).orElseGet(() -> TokenPool.builder().id(UUID.randomUUID()).creationTime(new Date()).longTerm(false).user(users).build()); tokenPool.setExpiredTime(expiredTime); tokenPoolRepository.save(tokenPool); return tokenPool.getId().toString(); } public void logout(String token) { if (token == null || token.isEmpty()) { throw new RuntimeException("没有传入token"); } TokenPool tokenPool = tokenPoolRepository.findById(UUID.fromString(token)).orElse(null); if (tokenPool != null) { usersRepository.findById(tokenPool.getUser().getId()).ifPresent(users -> { users.setLastActiveTime(new Date()); usersRepository.save(users); }); tokenPoolRepository.delete(tokenPool); } }不抽取方法
03-22
package com.lkm.ejb.student.entity; import sun.util.calendar.LocalGregorianCalendar; import javax.persistence.*; import java.io.Serializable; import java.util.Date; //@NamedQueries(@NamedQuery(name="findStudentByNo",query="select o from StudentEntity o where o.student_no like :filter")) @Entity @Table(name="TEST_STUDENT") public class StudentEntity implements Serializable { private static final long serialVersionUID = 2431555244875795282L; @Id @Column(name = "student_no") private String studentNo; @Column(name = "name") private String name; @Column(name = "home_address") private String homeAddress; @Column(name = "age") private Integer age; //入学日期 // @Temporal(TemporalType.DATE) @Column(name = "enrollment_date") private Date enrollmentDate; //有效状态(Y有效/N无效) @Column(name = "valid_status") private String validStatus; // @Temporal(TemporalType.TIMESTAMP) @Column(name = "create_time") private Date createTime; // @Temporal(TemporalType.TIMESTAMP) @Column(name = "update_time") private Date updateTime; public StudentEntity() { } public String getStudentNo() { return studentNo; } public void setStudentNo(String studentNo) { this.studentNo = studentNo; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getHomeAddress() { return homeAddress; } public void setHomeAddress(String homeAddress) { this.homeAddress = homeAddress; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Date getEnrollmentDate() { return enrollmentDate; } public void setEnrollmentDate(Date enrollmentDate) { this.enrollmentDate = enrollmentDate; } public String getValidStatus() { return validStatus; } public void setValidStatus(String validStatus) { this.validStatus = validStatus; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } public Date getUpdateTime() { return updateTime; } public void setUpdateTime(Date updateTime) { this.updateTime = updateTime; } } 像这个页面只能自己手敲吗 有什么快捷的办法 只讲答案
最新发布
07-17
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值