hibernate - 带有非键连接列的 Spring boot 多对一不起作用

标签 hibernate spring-boot spring-data spring-data-jpa

我有一个包含两个实体的旧数据库设计

@Entity
@Table(name = "tblRouters")
public class Router implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @Column(name = "nRouterID")
    private Integer routerId;

    @Column(name = "strRouterName")
    private String routerName;

    @Column(name = "strRouterIP")
    private String routerIp;

    @Column(name = "strLastAutomaticCheckTime")
    private String lastCheckTime;

    @Column(name = "nSupportedSnmpVersion")
    private String protocol;

    @OneToMany(fetch =FetchType.EAGER)
    @JoinColumn(name="strIpAddr", referencedColumnName="strRouterIP")
    //@JoinColumn(name="strIpAddr")
    private Set<RouterDetail> routerDetails;
cons, getters setters....

和 RouterDetail 类

@Entity
@Table(name = "tblRouter_Detail")
public class RouterDetail implements Serializable {


    private static final long serialVersionUID = 1L;

    @Id
    @Column(name = "nObjectId")
    private Integer objectId;

    @Column(name = "cObjectType")
    private Character objectType;

    @Column(name = "strSysName")
    private String systemName;

    @Column(name = "strDescription")
    private String systemDescription;

    @ManyToOne()
    @JoinColumn(name="strRouterIP")
    private Router router;

经过一番努力,我设法创建了正确的映射,使我能够在 Router 类中的 @JoinColumn 中使用引用的ColumnName 后执行查询,但是我需要查询急切地获取数据,所以我去更改了这一点(在 Router 类上)

@OneToMany()

@OneToMany(fetch =FetchType.EAGER)

这破坏了我的代码,但出现以下异常

Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Invalid column name 'strRouterIP'.

我使用 spring boot 1.5.3 和此接口(interface)来执行查询

public interface RouterService extends CrudRepository<Router, Integer> {

    public Iterable<Router> findAllByRouterDetailsObjectType(Character objectType);


}

这个映射有什么问题?

最佳答案

我能够通过将 RouterDetail join 列修改为此来解决此问题

@JoinColumn(name ="strIpAddr", referencedColumnName="strRouterIP")

关于hibernate - 带有非键连接列的 Spring boot 多对一不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45235126/

相关文章:

java - 来自同一实体的多个外键? (JPA hibernate )

java - 防止内部事务回滚外部事务

java - Swagger Codegen 3 和 Spring HATEOAS

java - Gradle + SpringBoot : :integrationTest not executed in build task

java - MongoDB 一对多和多对一关系

java - Grails 找不到 customCacheKeyGenerator

java - 尝试使用 Hibernate 保留实体时出错(MappingException : Unknown entity)

spring-boot - 无法解析 Spring Boot 版本 2.0.6 中的 WebSecurityConfigurerAdapter 类

java - 为spring data mongo指定多个基础包

spring - ReactiveCrudRepository 在 Spring 使用 Hibernate