gpt4 book ai didi

java - 简单的 Hibernate 映射问题

转载 作者:行者123 更新时间:2023-11-29 05:50:10 25 4
gpt4 key购买 nike

我正在尝试完成一个简单的映射,但我遇到了问题。

基本上,我在 Mysql 中拥有的是一个 User 表,其中只有一列是名为 Username 的 varchar(255),它是主键。

我还有一个名为 notes 的表,它有一个主要的自动生成键,它是一个 int,一个 date 列,varchar 名称和内容列以及一个名为 owner 的 varchar(255),其中应包含用户的用户名。

这被标记为引用用户(用户名)的外键。

获取 session 工厂的代码是这样的:

 private static SessionFactory createSessionFactory() {
SessionFactory sessionFactory;
Configuration configuration = new Configuration();
configuration.configure("hibernate.cfg.xml");
configuration.addAnnotatedClass(Note.class);
configuration.addAnnotatedClass(User.class);
StandardServiceRegistry serviceRegistry = new
StandardServiceRegistryBuilder().applySettings(
configuration.getProperties()).build();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
return sessionFactory;
}

如果没有添加带注释的类“Note”的行,这可以正常工作,因此它可能是该类的问题。错误是这样的:

无法获取构造函数 org.hibernate.persister.entity.SingleTableEntityPersister org.hibernate.MappingException

完整 stacktrace :

这里有完整的类(class):

Note

User

Test

更新:修复了 Owner/OwnerName 变量命名错误,但我现在收到此错误:错误:

Cannot add or update a child row: a foreign key constraint fails (notes.notes, CONSTRAINT notes_ibfk_1 FOREIGN KEY (Owner) REFERENCES users (username))

Stacktrace .

最佳答案

问题出在 Note 类中。对于变量所有者,setter 方法名称不合适。而不是

public void setOwnerName(String u) { 
this.owner = u;
}

应该是

public void setOwner(String u) { 
this.owner = u;
}

这应该可以解决问题。

关于java - 简单的 Hibernate 映射问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55193395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com