【发布时间】:2017-05-17 07:18:33
【问题描述】:
为什么我不能在OneToMany 端创建@JoinColumn?它抛出:
2017-05-17 09:13:34.063 WARN 7724 --- [ main] o.s.b.f.s.DefaultListableBeanFactory : Bean creation exception on non-lazy FactoryBean type check: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'roleMapper' defined in file [C:\MyProjects\myjnia\Myjnia_Inzynier\target\classes\com\carwash\mappers\RoleMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in com.carwash.MyjniaInzynierApplication: BeanPostProcessor before instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration': Initialization of bean failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'org.springframework.context.annotation.ConfigurationClassPostProcessor.importRegistry' available
. //always the same but with every mapper interface
.
.
当我改变方向时 - 将JoinColumn 放在Wash 一侧,它可以工作,但我想从Admin 表中引用Wash。
Admin类:
public class Admin {
private Integer adminId;
private User userId;
private List<Wash> washId;
@OneToMany(mappedBy = "washAdmin", fetch = FetchType.LAZY)
@JoinColumn(name = "washId")
public List<Wash> getWashId() {
return washId;
}
Wash类:
public class Wash {
private Integer washId;
private String name;
private WashLocation washLocation;
private List<Worker> washWorker;
private List<Reservation> washReservation;
private List<WashWashType> washTypes;
private Admin washAdmin;
@ManyToOne()
@JsonIgnore
public Admin getWashAdmin() {
return washAdmin;
}
public void setWashAdmin(Admin washAdmin) {
this.washAdmin = washAdmin;
}
【问题讨论】:
-
请添加完整的堆栈跟踪
-
@Jens 已更新..
-
@JoinColumn指定 ELEMENT 中列的名称,即在Wash中。就是这样。将@JoinColumn放在Wash或Admin中都没有关系... FK 将始终放在元素中 -
如果你想在
Admin中有一个FK,那么关系就不是@OneToMany,因为没有物理方法可以用FK 在那一侧建模!!!在这种情况下使用@OneToOne
标签: hibernate jpa hibernate-annotations