gpt4 book ai didi

java - 我怎样才能在我的类(class)中拥有 2 个相同类型的对象?

转载 作者:搜寻专家 更新时间:2023-10-30 20:11:37 24 4
gpt4 key购买 nike

我有一个类需要有 2 个相同类型的对象。我正在使用 Hibernate,它根据我的类创建我的数据库模式。

属性:

private User user;
private User keyAccountManager;

setter/getter / setter/getter :

@ManyToOne
@JoinColumn(name = "userId")
@ForeignKey(name = "license_users_fk")
public User getUser() {
return user;
}

@ManyToOne
@JoinColumn(name = "userId")
@ForeignKey(name = "license_kam_fk")
public User getKeyAccountManager() {
return keyAccountManager;
}

如果我这样做,我会得到这个错误:

Caused by: org.hibernate.MappingException: Repeated column in mapping for entity: License column: userId (should be mapped with insert="false" update="false")
at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:670)
at org.hibernate.mapping.PersistentClass.checkPropertyColumnDuplication(PersistentClass.java:692)
at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:714)
at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:468)
at org.hibernate.mapping.RootClass.validate(RootClass.java:215)
at org.hibernate.cfg.Configuration.validate(Configuration.java:1135)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1320)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
... 55 more

当我将它更改为 @JoinColumn(name = "userId", insertable=false, updatable=false) 时,它部署没有问题,该列是在数据库中创建的,但是当我调用setKeyAccountManager(),数据库中没有设置值。

我怎样才能在这个类中有 2 个相同类型的对象?谢谢!

最佳答案

问题不在于它们属于同一类。问题是它们都映射到列 userId。

Hibernate 期望 getKeyAccountManager() 代表 userId 列或 getUser() 代表 userId 列,而不是两者。

也许您引用了错误的列?

关于java - 我怎样才能在我的类(class)中拥有 2 个相同类型的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9580322/

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