/* | |
* Licensed to the Apache Software Foundation (ASF) under one | |
* or more contributor license agreements. See the NOTICE file | |
* distributed with this work for additional information | |
* regarding copyright ownership. The ASF licenses this file | |
* to you under the Apache License, Version 2.0 (the | |
* "License"); you may not use this file except in compliance | |
* with the License. You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, | |
* software distributed under the License is distributed on an | |
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
* KIND, either express or implied. See the License for the | |
* specific language governing permissions and limitations | |
* under the License. | |
*/ | |
package org.apache.openjpa.persistence.merge; | |
import javax.persistence.Column; | |
import javax.persistence.Entity; | |
import javax.persistence.Id; | |
import javax.persistence.IdClass; | |
import javax.persistence.Table; | |
@Entity | |
@Table( name = "ITEM_TABLE" ) | |
// Remove this @IdClass, and one of the @Id (i.e. use a single PK, not a compound PK | |
// and the test will work fine!!!!! | |
@IdClass( LineItemPK.class ) | |
public class LineItem { | |
@Id | |
@Column( name = "ORDER_ID", nullable = false ) | |
private Long orderId; | |
@Id | |
@Column( name = "ITEM_ID", nullable = false ) | |
private Long itemId; | |
@Column( name = "PRODUCT_NAME", nullable = false ) | |
private String productName; | |
@Column( name = "QUANTITY", nullable = false ) | |
private int quantity; | |
@Column( name = "PRICE", nullable = false ) | |
private float price; | |
public LineItem() { | |
} | |
public LineItem( String productName, int quantity, float price ) { | |
this(); | |
this.productName = productName; | |
this.quantity = quantity; | |
this.price = price; | |
} | |
public String getProductName() { | |
return productName; | |
} | |
public void setProductName(String productName) { | |
this.productName = productName; | |
} | |
public int getQuantity() { | |
return quantity; | |
} | |
public void setQuantity(int quantity) { | |
this.quantity = quantity; | |
} | |
public float getPrice() { | |
return price; | |
} | |
public void setPrice(float price) { | |
this.price = price; | |
} | |
public Long getOrderId() { | |
return orderId; | |
} | |
public void setOrderId(Long orderId) { | |
this.orderId = orderId; | |
} | |
public Long getItemId() { | |
return itemId; | |
} | |
public void setItemId(Long itemId) { | |
this.itemId = itemId; | |
} | |
@Override | |
public int hashCode() { | |
final int prime = 31; | |
int result = 1; | |
result = prime * result + ((itemId == null) ? 0 : itemId.hashCode()); | |
result = prime * result + ((orderId == null) ? 0 : orderId.hashCode()); | |
result = prime * result + Float.floatToIntBits(price); | |
result = prime * result + ((productName == null) ? 0 : productName.hashCode()); | |
result = prime * result + quantity; | |
return result; | |
} | |
@Override | |
public boolean equals(Object obj) { | |
if (this == obj) | |
return true; | |
if (obj == null) | |
return false; | |
if (getClass() != obj.getClass()) | |
return false; | |
LineItem other = (LineItem) obj; | |
if (itemId == null) { | |
if (other.itemId != null) | |
return false; | |
} else if (!itemId.equals(other.itemId)) | |
return false; | |
if (orderId == null) { | |
if (other.orderId != null) | |
return false; | |
} else if (!orderId.equals(other.orderId)) | |
return false; | |
if (Float.floatToIntBits(price) != Float.floatToIntBits(other.price)) | |
return false; | |
if (productName == null) { | |
if (other.productName != null) | |
return false; | |
} else if (!productName.equals(other.productName)) | |
return false; | |
if (quantity != other.quantity) | |
return false; | |
return true; | |
} | |
} |