Прежде всего мне очень жаль спрашивать о такой простой вещи, я знаю, что это может раздражать, но я хочу знать, если я сделаю шаг в неправильном направлении.Конечно, я перейду к пошаговому чтению документации, но теперь все, что я хочу, - это решить эту проблему.
Я хочу выбрать значения из двух таблиц с привязкой многие-к-одному (каждая категория может подходить для разных компьютеров).
+------------+ +------------+
|computers | |categories |
+------------+ +------------+
|categoryId |------------>|categoryId |
|computerId | |categoryName|
|computerName| +------------+
+------------+
Вот автоматически сгенерированные классы POJO:
@Table(name="computers", catalog="dbname")
public class Computers implements java.io.Serializable {
private Integer computerId;
private Categories categories;
private String computerName;
public Computers() {
}
public Computers(Categories categories, String computerName) {
this.categories = categories;
this.computerName = computerName;
}
@Id
@GeneratedValue(strategy=IDENTITY)
@Column(name="computerId", unique=true, nullable=false)
public Integer getComputerId() {
return this.computerId;
}
public void setComputerId(Integer computerId) {
this.computerId = computerId;
}
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="categoryId", nullable=false)
public Categories getCategories() {
return this.categories;
}
public void setCategories(Categories categories) {
this.categories = categories;
}
@Column(name="computerName", nullable=false)
public String getComputerName() {
return this.computerName;
}
public void setComputerName(String computerName) {
this.computerName = computerName;
}
}
@Entity
@Table(name="categories"
,catalog="dbname"
)
public class Categories implements java.io.Serializable {
private Integer categoryId;
private String categoryName;
private Set<Computers> computerss = new HashSet<Computers>(0);
private Set<Customers> customerss = new HashSet<Customers>(0);
public Categories() {
}
public Categories(String categoryName) {
this.categoryName = categoryName;
}
public Categories(String categoryName, Set<Computers> computerss, Set<Customers> customerss) {
this.categoryName = categoryName;
this.computerss = computerss;
this.customerss = customerss;
}
@Id @GeneratedValue(strategy=IDENTITY)
@Column(name="categoryId", unique=true, nullable=false)
public Integer getCategoryId() {
return this.categoryId;
}
public void setCategoryId(Integer categoryId) {
this.categoryId = categoryId;
}
@Column(name="categoryName", nullable=false)
public String getCategoryName() {
return this.categoryName;
}
public void setCategoryName(String categoryName) {
this.categoryName = categoryName;
}
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="categories")
public Set<Computers> getComputerss() {
return this.computerss;
}
public void setComputerss(Set<Computers> computerss) {
this.computerss = computerss;
}
@ManyToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="categories")
public Set<Customers> getCustomerss() {
return this.customerss;
}
public void setCustomerses(Set<Customers> customerss) {
this.customerss = customerss;
}
Если я выбираю значения с помощью HQL-запроса from Computers
(я помещаю их в список), я вижу ${computer.computerName}
, но ни один из ${computer.categories.categoryName}
не появляется.Я хочу, чтобы каждый categoryName
был выбран по идентификатору.Все категории должны отображаться вместе с именами.SQL-запрос для этой задачи не составит труда написать, но я хочу использовать Hibernate и не очень хорошо его понимаю в данный момент.Я думал, что все, что мне нужно, это отображения, представленные в классах.Мой простой from Computers
не подходит для такого выбора?Я не получаю ошибок, которые могли бы немного облегчить понимание того, что я делаю неправильно.Любая помощь будет оценена.