hibernateを使用してエラーが発生しました。 私のクラス: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のユーザーのカートに関するすべての情報は、これを返すために私は製品(名前、価格、...)のすべての情報を必要とする私は内部結合を使用する=) –
私は答えを編集した、あなたは何ですか?取得しようとしている? –
いいえ)それは私のhql 'と一緒にうまく働いたカートからcジョインc.productオーダーby c.cartId ASC'を選択します。これはhqlでは問題ではありません。主な問題は、データベースのダンプ/リストア後**このクエリはproduct ref **のcart_id == product_idのリストを返します。例えばcart_id:10、user_id:13、product_id:21、quantity:23のようなレコードがあります。これはこの値でカートを返し、product_id = 21のcart.productとid = 21の商品に関するデータを返します。 (cart_id:10、user_id:12、product_id:21、quantity:23)が、cart.productはid 10の商品と10番目の製品のすべてのデータを返します。 –