gpt4 book ai didi

java - hibernate : @JoinTable

转载 作者:太空宇宙 更新时间:2023-11-04 12:48:46 25 4
gpt4 key购买 nike

我在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/

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