作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在研究安心的服务和观点。关于它,我使用mysql和hibernate 5。我的数据表有两个,有引用关系。当我更新主键时出现问题。当我添加新数据然后更新另一表中的现有数据(它们具有引用关系)时,HHH000346:托管刷新期间发生错误。
我已经在 google 上搜索过,但找不到答案。
这是我的实体类。
@Entity
@Table(name = "users")
@EntityListeners(AuditingEntityListener.class)
public class User {
private long serial;
private String username;
private String password;
public User() {
}
public User(long serial, String username, String password) {
setSerial(serial);
setUsername(username);
setPassword(password);
}
@Column(name = "serial", nullable = false)
@GeneratedValue(strategy = GenerationType.AUTO)
public long getSerial() {
return serial;
}
public void setSerial(long serial) {
this.serial = serial;
}
@Id
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
@Column(name = "password", nullable = false)
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "serial: " + this.serial + ", username: " + this.username + ", password: " + this.password;
}
}
Entity
@Table(name = "sites")
@EntityListeners(AuditingEntityListener.class)
@IdClass(Site.class)
public class Site implements Serializable{
@ManyToOne
@JoinColumn(name="username",foreignKey=@ForeignKey(name="username"))
private String username;
private String siteURL;
@Id
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
@Id
public String getSiteURL() {
return siteURL;
}
public void setSiteURL(String siteName) {
this.siteURL = siteName;
}
}
这是类有问题的。
public class UserController {
@Autowired
private UserRepository userRepository;
@Autowired
private SiteRepository siteRepository;
private CryptoUtil passwordEncoder = new CryptoUtil();
...
@PutMapping("/users/{username}")
public User updateUser(@PathVariable(value = "username") String username, @Valid @RequestBody User userDetails)
throws ResourceNotFoundException {
User user = userRepository.findById(username)
.orElseThrow(() -> new ResourceNotFoundException("User not found on :: " + username));
List<Site> sites = siteRepository.findByUsername(user.getUsername());
userDetails.setPassword(passwordEncoder.encryptSHA256(userDetails.getPassword()));
final User updateUser = userRepository.save(userDetails);
for (Site site : sites)
{
site.setUsername(userDetails.getUsername());
site = siteRepository.save(site);
}
userRepository.delete(user);
return updateUser;
}
....
}
The for-each statement occurs error.
PLEASE HELP ME
最佳答案
你为什么这么做?
@ManyToOne
@JoinColumn(name="username",foreignKey=@ForeignKey(name="username"))
private String username;
应该是:
@ManyToOne
@JoinColumn(name="username",foreignKey=@ForeignKey(name="username"))
private User user;
我还建议您使用主键作为外键。并且一个实体中不能有多个 @Id
。
关于mysql - 如何解决使用 hibernate 5 和 mysql 出现 HHH000346 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56253921/
在 MySQL 中,我试图获取两个时间戳值之间的差异并将结果存储在时间列中。但有时结果会以 'hhh:mm:ss' 格式出现。在尝试使用 Result.getTime() 访问 Java 中的该列时,
我有这种格式的时间, 72.345, 72.629, 71.327, ... 作为在 Python 中执行计算的结果。似乎将它们转换为 HH:MM:SS 格式的最简单方法是使用 datetime 模块
我知道 hh:mm:ss 是 time_object.strftime('%H:%M:%S')。我使用此格式的时间超过 24 小时,因此小时部分溢出。在 strftime 中获取 hhh:mm:ss
这似乎是一个新手问题,但我真的很挣扎。 我在 mysql 数据库中有一个时间字段。我正在使用 vb.net 2012。我试图在时间字段中插入时间量。我决定使用文本框并让用户输入小数形式的时间量 (1:
我是一名优秀的程序员,十分优秀!