java - hibernate : @JoinTable

标签 java hibernate

我在hibernate中理解了@joincolumn。现在我开始使用@JoinTable。以下是我的 POJO

@Entity
@Table(name = "person")
public class Person {

    @Id
    @GeneratedValue
    @Column(name = "person_id")
    private long person_id;


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


    @Column(name = "Address")
    private String Address;


    @OneToOne(cascade=CascadeType.ALL,fetch = FetchType.EAGER)  
        @JoinTable(name="person_phone",  
        joinColumns={@JoinColumn(name="person_id", referencedColumnName="person_id")},  
        inverseJoinColumns={@JoinColumn(name="phone_id", referencedColumnName="phone_id")})  
    private Phone phone;

        //Getters ande Setters

}


@Entity
@Table(name = "phone")
public class Phone{

    @Id
    @GeneratedValue
    @Column(name = "phone_id")
    private long phone_id;


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


        //Getters ande Setters


}

在我的 Controller 中,我做了以下操作

 @RequestMapping(value = "/persons", method = RequestMethod.GET)
    public List<person> listPersons() {     

        StringBuilder sql = new StringBuilder();
        sql.append("SELECT * FROM person);  
        Query query = getSession().createSQLQuery(sql.toString()).addEntity(Person.class);
        return query.list();
    }

当我执行 Select * from person 时。我收到以下错误

ERROR o.h.e.jdbc.spi.SqlExceptionHelper - The column name phone_id was not found in this ResultSet.

我想要实现的是,当我从 person 表中检索记录时,我也想要相应的电话详细信息。

最佳答案

选择Hibernate createQuery方法而不是createSqlQuery来匹配实体更准确。 请尝试以下;

    StringBuilder sql = new StringBuilder();
    sql.append("FROM Person");  //using hibernate query
    Query query = getSession().createQuery(sql.toString()); //Hibernate query so use createQuery not createSqlQuery
    return query.list();

关于java - hibernate : @JoinTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36053257/

相关文章:

database - 如何排除 hibernate 中返回的某些列

java - 使用@MappedSuperclass 而不是@Entity 可以不使用JPA 在数据库中创建表吗?

java - “找不到符号”或“无法解析符号”错误是什么意思?

java - 如何使用 JPA 和 hibernate 映射 Java/Kotlin 字符串数组和 Postgres SQL 数组

java - 跨项目共享 hibernate 配置的最佳方式

sql - HQL:从 Eager 表中获取连接集合

java - 如果我们知道距离 x1, y1, y2 则计算 x2

java - 尝试在 SASL 身份验证期间切换数据库目标

java - 什么是NullPointerException,我该如何解决?

java - Redis - 考虑重命名其中一个 bean 或通过设置 spring.main.allow-bean-definition-overriding=true 启用覆盖