HHH-9798 - Add test for Unique constraint of @JoinColumn in @JoinTable not generated
This commit is contained in:
parent
905c79c65e
commit
fdd7fb8080
|
@ -0,0 +1,41 @@
|
|||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
||||
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||
*/
|
||||
package org.hibernate.test.annotations.onetoone.hhh9798;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.GenerationType;
|
||||
import javax.persistence.Id;
|
||||
|
||||
@Entity
|
||||
public class Item {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.SEQUENCE)
|
||||
protected Long id;
|
||||
|
||||
protected String name;
|
||||
|
||||
public Item() {
|
||||
}
|
||||
|
||||
public Item(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
||||
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||
*/
|
||||
package org.hibernate.test.annotations.onetoone.hhh9798;
|
||||
|
||||
import org.hibernate.Session;
|
||||
import org.hibernate.Transaction;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import org.hibernate.testing.TestForIssue;
|
||||
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
|
||||
|
||||
@TestForIssue(jiraKey = "HHH-9798")
|
||||
public class OneToOneJoinTableTest extends BaseCoreFunctionalTestCase {
|
||||
|
||||
@Test(expected = org.hibernate.exception.ConstraintViolationException.class)
|
||||
public void storeNonUniqueRelationship() throws Throwable {
|
||||
Session session = null;
|
||||
try {
|
||||
session = openSession();
|
||||
Transaction tx = session.beginTransaction();
|
||||
|
||||
Item someItem = new Item( "Some Item" );
|
||||
session.save( someItem );
|
||||
|
||||
Shipment shipment1 = new Shipment( someItem );
|
||||
session.save( shipment1 );
|
||||
|
||||
Shipment shipment2 = new Shipment( someItem );
|
||||
session.save( shipment2 );
|
||||
|
||||
tx.commit();
|
||||
}
|
||||
finally {
|
||||
if ( session != null ) {
|
||||
session.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Class<?>[] getAnnotatedClasses() {
|
||||
return new Class<?>[] {
|
||||
Shipment.class,
|
||||
Item.class
|
||||
};
|
||||
}
|
||||
}
|
|
@ -0,0 +1,79 @@
|
|||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
||||
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||
*/
|
||||
package org.hibernate.test.annotations.onetoone.hhh9798;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.FetchType;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.GenerationType;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.JoinColumn;
|
||||
import javax.persistence.JoinTable;
|
||||
import javax.persistence.OneToOne;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.Date;
|
||||
|
||||
@Entity
|
||||
public class Shipment {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.SEQUENCE)
|
||||
protected Long id;
|
||||
|
||||
@NotNull
|
||||
protected Date createdOn = new Date();
|
||||
|
||||
@NotNull
|
||||
protected ShipmentState shipmentState = ShipmentState.TRANSIT;
|
||||
|
||||
@OneToOne(fetch = FetchType.LAZY)
|
||||
@JoinTable(
|
||||
name = "ITEM_SHIPMENT",
|
||||
joinColumns =
|
||||
@JoinColumn(name = "SHIPMENT_ID"),
|
||||
inverseJoinColumns =
|
||||
@JoinColumn(name = "ITEM_ID",
|
||||
nullable = false,
|
||||
unique = true)
|
||||
)
|
||||
protected Item auction;
|
||||
|
||||
public Shipment() {
|
||||
}
|
||||
|
||||
public Shipment(Item auction) {
|
||||
this.auction = auction;
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public Date getCreatedOn() {
|
||||
return createdOn;
|
||||
}
|
||||
|
||||
public void setCreatedOn(Date createdOn) {
|
||||
this.createdOn = createdOn;
|
||||
}
|
||||
|
||||
public ShipmentState getShipmentState() {
|
||||
return shipmentState;
|
||||
}
|
||||
|
||||
public void setShipmentState(ShipmentState shipmentState) {
|
||||
this.shipmentState = shipmentState;
|
||||
}
|
||||
|
||||
public Item getAuction() {
|
||||
return auction;
|
||||
}
|
||||
|
||||
public void setAuction(Item auction) {
|
||||
this.auction = auction;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
||||
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||
*/
|
||||
package org.hibernate.test.annotations.onetoone.hhh9798;
|
||||
|
||||
public enum ShipmentState {
|
||||
|
||||
TRANSIT,
|
||||
CONFIRMED
|
||||
|
||||
}
|
Loading…
Reference in New Issue