Я новичок в Spring Data JPA и столкнулся с проблемой соединения двух таблиц.
У меня есть две таблицы: Product
и Type
.
Product
имеет поля как product_no
, name
, cost
, type_id
.
Type
имеет поля id
и name
.Я могу получить данные из таблицы Product
, но не могу отобразить имя Type
вместе с информацией о продукте.Таблицы с данными следующие:
Table : product
id product_no name type_id
1 kts2018 Kites tracker 1
2 jt2018 Jira tracker 1
3 st2018 Strike seeker 2
Table: type
id name
1 Tracker
2 Seeker
Существуют следующие объекты:
Продукт
@Entity
@Table(name = "product")
public class Product implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "product_no")
private String product_no;
@Column(name = "name")
private String name;
@ManyToOne
@JoinColumn(name = "type_id")
private Type type;
public String getProduct_no() {
return product_no;
}
public void setProduct_no(String product_no) {
this.product_no = product_no;
}
public Level getType() {
return type;
}
public void setType(Type type) {
this.type = type;
}
Тип
@Entity
@Table(name = "type")
public class Type implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@Column(name = "name")
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
IЯ использую приведенный ниже код для извлечения данных из таблицы продуктов: -
public interface ProductRepository extends JpaRepository<Product, Long> {
@Query("select product, product.type.name FROM Product product where product.type.id=1")
List<Product> getAllUserProducts();
}
Контроллер выглядит следующим образом: -
@GetMapping("secure/product-details")
public ModelAndView getAllUserProducts() {
ModelAndView mav = new ModelAndView();
mav.addObject("userProducts", userInfoService.getAllUserProducts());
mav.setViewName("products");
return mav;
}
products.html
<tr th:each="product: ${userProducts}">
<td th:text="${product.product_no}"></td>
<td th:text="${product.type.name}"></td>
<td><a class="btn-info btn-sm" style="border-radius: 4px"
th:href="${'/show/' + product.product_no}">Process</a></td>
</tr>
Теперь я получаю ошибки Thymeleaf.
Это говорит
Exception evaluating SpringEL expression: "product.product_no"