这是我的 DAO 和实体。谢谢。
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import com.westfieldgrp.beanvalidation.persistence.Car;
import com.westfieldgrp.beanvalidation.persistence.Driver;
import com.westfieldgrp.beanvalidation.persistence.Person;
import com.westfieldgrp.common.data.dao.DAOInterface;
public class CarDAO {
private EntityManager entityManager;
public void save(Person convertedPerson, Driver convertedDriver, Car convertedCar) {
EntityManager em = getEntityManager();
//convertedPerson.setName(convertedPerson.getName()); // To test JPA validation
Person savedPerson = em.merge(convertedPerson);
convertedDriver.setPersonId(savedPerson.getPersonId());
Driver savedDriver = em.merge(convertedDriver);
convertedCar.setDriverId(savedDriver.getPersonId());
if("test".equals(convertedCar.getManufacturer())){
convertedCar.setManufacturer(null);// To test JPA validation
}
em.persist(convertedCar);
em.flush();
}
public EntityManager getEntityManager() {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("src_persistence");
entityManager = emf.createEntityManager();
return entityManager;
}
public void setEntityManager(EntityManager entityManager) {
this.entityManager = entityManager;
}
}
实体:
import java.io.Serializable;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.PrePersist;
import javax.persistence.Table;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import javax.validation.constraints.AssertTrue;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
/**
* The persistent class for the CAR database table.
*
*/
@Entity
@Table(name="CAR")
public class Car implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="CAR_ID")
private int carId;
@Column(name="INSPECTION_PASSED")
@AssertTrue(message = "The car has to pass the vehicle inspection first")//, groups = CarChecks.class)
private boolean inspectionPassed;
@Column(name="LICENSE_PLATE_NUMBER")
@NotNull(message = "A license plate is required.")
@Size(min = 2, max = 14, message="The license plate field must be 2-14 characters.")
private String licensePlateNumber;
@Column(name="MANUFACTURER")
@NotNull(message = "A manufacturer is required.")
private String manufacturer;
@Column(name="REGISTERED")
private boolean registered;
@Column(name="SEAT_COUNT")
@Min(value =2, message="The car must contain more than 1 seat.")
private int seatCount;
@Column(name="DRIVER_ID")
private int driverId;
@PrePersist
public void testPrePersist(){
System.out.println("@@@@PrePersist was called. " + manufacturer);
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
Set<ConstraintViolation<Car>> violations = validator.validate(this);
for (ConstraintViolation<Car> violation : violations) {
System.out.format("%s: %s%n",violation.getPropertyPath(), violation.getMessage());
}
}
public Car() {
}
public int getCarId() {
return this.carId;
}
public void setCarId(int carId) {
this.carId = carId;
}
public boolean getInspectionPassed() {
return this.inspectionPassed;
}
public void setInspectionPassed(boolean inspectionPassed) {
this.inspectionPassed = inspectionPassed;
}
public String getLicensePlateNumber() {
return this.licensePlateNumber;
}
public void setLicensePlateNumber(String licensePlateNumber) {
this.licensePlateNumber = licensePlateNumber;
}
public String getManufacturer() {
return this.manufacturer;
}
public void setManufacturer(String manufacturer) {
this.manufacturer = manufacturer;
}
public boolean getRegistered() {
return this.registered;
}
public void setRegistered(boolean registered) {
this.registered = registered;
}
public int getSeatCount() {
return this.seatCount;
}
public void setSeatCount(int seatCount) {
this.seatCount = seatCount;
}
public void setDriverId(int diverId) {
this.driverId = diverId;
}
public int getDriverId() {
return driverId;
}
}