我已经理解了hibernate中的@ have列。现在我已经从@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
}在我的控制器中,我完成了以下操作
@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。我收到以下错误
错误o.h.e.jdbc.spi.SqlExceptionHelper -在这个ResultSet中找不到列名phone_id。
我想要实现的是,当我从person表检索记录时,我还需要相应的phone详细信息。
发布于 2016-03-17 12:20:02
选择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();发布于 2016-03-17 07:09:23
@Entity
@Table(name = "person")
public class Person implements java.io.Serializable {
private long personId;
private String name;
private String address;
private Phone phone;
public Person () {
}
@Id
@GeneratedValue
@Column(name = "person_id")
public BigDecimal getPersonId() {
return this.personId;
}
@Column(name = "name")
public BigDecimal getName() {
return this.name;
}
@Column(name = "Address")
public BigDecimal getAddress() {
return this.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")})
public Phone getPhone() {
return this.phone;
}
// setter function
}
@Entity
@Table(name = "person_phone")
public class Phone{
private long personId;
private String name;
@Id
@GeneratedValue
@Column(name = "person_id")
public long getPersonId() {
return this.personId;
}
@Column(name = "name")
public String getName() {
return this.name;
}
//setter function
}https://stackoverflow.com/questions/36053257
复制相似问题