用户类:Customer

import lombok.Data;

import javax.persistence.*;
import java.util.HashSet;
import java.util.Set;

@Data
@Entity(name = "OneToMany_CUTOMERS")
@Table(name = "OneToMany_CUTOMERS")
public class Customer {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;

    @Column(name = "LAST_NAME", length = 50, nullable = false)
    private String lastName;

    private String email;

    // 映射单向 1-n 的关联关系
    // 使用 @OneToMany 来映射 1-n 的关联关系
    // 使用 @JoinColumn 来映射外键列的名称
    // 可使用 @ManyToOne 的 fetch 属性来修改默认的关联属性的加载策略,在左外连接和两条SQL间切换
    // 使用 @OneToMany 的 cascade 属性来修改默认的删除策略,例在删除 1 的一端时,把 n 的一段也删除,级联删除
    @JoinColumn(name = "CUSTOMER_ID")
    @OneToMany(fetch = FetchType.EAGER, cascade = {CascadeType.REMOVE})
    private Set<Order> orders = new HashSet<>();
}

订单类:Order

import lombok.Data;

import javax.persistence.*;

@Data
@Entity(name = "OneToMany_ORDERS")
@Table(name = "OneToMany_ORDERS")
public class Order {

    @Id
    @GeneratedValue
    private Integer id;

    @Column(name = "ORDER_NAME")
    private String orderName;
}

 

测试

建表

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;

public class JPAyingshe {
    private EntityManagerFactory entityManagerFactory;
    private EntityManager entityManager;
    private EntityTransaction transaction;

    @Before
    public void init() {
        entityManagerFactory = Persistence.createEntityManagerFactory("jpaname");
        entityManager = entityManagerFactory.createEntityManager();
        transaction = entityManager.getTransaction();
        transaction.begin();
    }

    @After
    public void destroy() {
        transaction.commit();
        entityManager.close();
        entityManagerFactory.close();
    }

    @Test
    public void createTable() {}
}
View Code

相关文章: