0
我有使用休眠的错误。 我的课:Hibernate在加入时返回false值
@Entity
@Table(name = "cart")
public class Cart {
@Id
@Column(name = "cart_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int cartId;
@Column(name = "user_id")
private int userId;
@Column(name = "product_id")
private int productId;
@Column(name = "quantity")
private int quantity;
@OneToOne(fetch = FetchType.LAZY, mappedBy = "cart", cascade = CascadeType.ALL)
private Product product;
我的第二类:
@Entity
@Table(name = "products")
public class Product{
@Id
@Column(name = "product_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int productId;
@Column(name = "article")
private String article;
@Column(name = "name")
private String name;
@Column(name = "price")
private BigDecimal price;
@Column(name = "description")
private String description;
@Column(name = "manufacturer")
private String manufacturer;
@Column(name = "category")
private String category;
@Column(name = "unitsinstock")
private long unitsInStock;
@OneToOne(fetch = FetchType.LAZY)
@PrimaryKeyJoinColumn
private Cart cart;
当我执行此代码:
String hql = "SELECT c FROM Cart c JOIN c.product ORDER BY c.cartId ASC";
List<Cart> cart = session.createQuery(hql).list();
它返回其中的product_id等于cart_id
这种错误的价值观我在t之后看到了这个将我的数据库转移到新的pc(使用pg_dump的postgres 9.5)。
我认为这是恢复后的一些错误,但表结构是正确的。
车外键:"cart_pkey" FOREIGN KEY (product_id) REFERENCES products(product_id) ON DELETE CASCADE
产品指标:"products_pkey" PRIMARY KEY, btree (product_id)
产品主键:TABLE "cart" CONSTRAINT "cart_pkey" FOREIGN KEY (product_id) REFERENCES products(product_id) ON DELETE CASCADE
我想例如返回所有关于id == N的用户的购物车的信息,要返回这个我需要关于产品(名称,价格,...)的所有信息来做到这一点,我使用内部连接=) –
我编辑答案,是你是什么试图得到? –
Nope)它与我的hql'SELECT c FROM Cart c JOIN c.product ORDER BY c.cartId ASC'工作正常。这在hql中不是问题。主要问题是数据库转储/恢复后**此查询返回产品ref **中cart_id == product_id的列表。例如我有cart_id:10,user_id:13,product_id:21,数量:23这样的记录。这应该返回购物车与此值和cart.product与product_id = 21和有关id = 21产品的数据,查询返回购物车正确(cart_id:10,user_id:12,product_id:21,数量:23),但cart.product返回id为10的产品以及第10个产品的所有数据。 –