我对 Spring MVC 完全陌生,但仍在尝试理解它的方法和引用事物的方式。我正在关注一个视频教程类(class)。
我正在尝试通过类实现模型。
ProductDaoImpl.java
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public class ProductDaoImpl implements ProductDao {
@Autowired
private SessionFactory sessionFactory;
@Override
public void addProduct(Product product) {
Session session = sessionFactory.getCurrentSession();
session.saveOrUpdate(product);
session.flush();
}
@Override
public Product getProductById(String id) {
Session session = sessionFactory.getCurrentSession();
Product product = (Product) session.get(Product.class.productId);
// unable to resolve the productId on get()
return product;
}
@Override
public List<Product> getAllProducts() {
return null;
}
@Override
public void deleteProduct(String id) {
}
}
ProductDao.java
import java.util.List;
public interface ProductDao {
void addProduct(Product product);
Product getProductById(String id);
List<Product> getAllProducts();
void deleteProduct(String id);
}
Product.java模型
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.AUTO) //tells the system that when an instance is put to database, it will be numbered automatically starting from 1
private String productName;
private String productCategory;
private String productDescription;
private double productPrice;
private String productDimension;
private String productStatus;
private int unitInStock;
private String productManufacturer;
private String productId;
}
但是,它无法解析
中的 productId 参数@Override
public Product getProductById(String id) {
Session session = sessionFactory.getCurrentSession();
Product product = (Product) session.get(Product.class.productId);
return product;
}
get()
方法是否能够访问Product.class
的字段?
它是否要求 Product.class.fieldHere 中的字段?
我不明白为什么它无法解析productId
希望能帮到你。
谢谢。
最佳答案
表达式Product.class.productId
在Java中没有意义。 Product.class
是一个类文字,这意味着它是一个表示 Product
类的常量值,是 java.lang 的一个实例.类
。 Class
没有 productId
字段。
此外,您应该阅读the Javadoc对于该方法,它需要两个参数,一个 Class 对象(告诉它您正在获得什么类型的东西)和一个 ID。因此,您的调用应该是 session.get(Product.class, id)
,并且如果您使用 Hibernate 5,则不需要转换为 Product
。
关于java - session.get() 无法解析字段、参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40327733/