我想要做的是将我的id从float更改为字符串。
我有一个代表团体的实体:
def restartSim():
"""Restarts the current program.
Note: this function does not return. Any cleanup action (like
saving data) must be done before calling this function."""
python = sys.executable
os.execl(python, python, * sys.argv)
在我的引导文件中,我有这个:
@Entity
@Table(name="group")
public class GroupEntity {
@Id
private String name;
@ManyToMany
private List<UserEntity> users;
我的UserEntity类如下:
Password p = new Password("test");
UserEntity user = new UserEntity("pedro", p);
List<UserEntity> users = new ArrayList<UserEntity>();
List<GroupEntity> groupEntities=new ArrayList<GroupEntity>();
users.add(user);
GroupEntity r1 = new GroupEntity("Integrations");
groupEntities.add(r1);
user.getGroups().add(r1); //this user has a group
r1.setUsers(users); // this group has a user
这样,我的程序就可以正常工作了,您可以看到以ID为名称保存的组:
但是当我将UserEntity类从该类更改为这一类时:
@Entity
@Table(name="user")
public class UserEntity {
@Id
@GeneratedValue
private Long id;
private String name;
出现此错误:
org.springframework.beans.factory.BeanCreationException:错误 创建名称为'bootstrap'的bean:调用init方法失败; 嵌套异常为 org.springframework.orm.jpa.JpaObjectRetrievalFailureException:无法 查找ID为Integrations的com.alert.interservices.uaa.RoleEntity; 嵌套的异常为javax.persistence.EntityNotFoundException:无法 找到ID为Integrations的com.alert.interservices.uaa.RoleEntity
我认为问题出在id上,但不知道如何解决。
更新1-application.properties:
@Entity
@Table(name="user")
public class UserEntity {
@Id
private String name;
答案 0 :(得分:0)
首先,是的,您可以将String用作ID类型。但是我认为您的问题是您在编辑实体时未删除旧数据库,因此要避免该问题,您必须在持久性单元中更改策略以进行删除和创建,因为您正在使用spring数据,因此可以使用:
spring.jpa.hibernate.ddl-auto=create-drop
但是您可以将其仅用于测试,但是在生产环境中,必须将其切换为spring.jpa.hibernate.ddl-auto=update.
注意:update
选项只会添加列,而不会删除列。