User一方
@Entity
@Table(name = "g_user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String name;
@OneToMany(cascade = CascadeType.ALL,fetch = FetchType.LAZY, targetEntity = Article.class,orphanRemoval = true)//用户作为一方使用OneToMany注解
private Set<Article> articles;
private LocalDateTime dateTime;
ArticleTest为多方
@Table(name = "g_article")
@Entity
public class ArticleTest {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Lob
private String content;
/*
* @ManyToOne 使用此标签建立多对一关联,此属性在“多”方使用注解在我们的“一”方属性上
* @cascade 指定级联操作,以数组方式指定,如果只有一个,可以省略“{}”
* @fetch 定义抓取策略
* @optional 定义是否为必需属性,如果为必需(false),但在持久化时user = null,则会持久化失败
* @targetEntity 目标关联对象,默认为被注解属性所在类
*/
@ManyToOne(cascade ={CascadeType.ALL},fetch = FetchType.LAZY,optional = false,targetEntity = User.class)
private User user;
测试方法
@Test
public void test3(){
User user = new User();
user.setName("name1");
user.setDate(LocalDate.now());
user.setTime(LocalTime.now());
user.setDateTime(LocalDateTime.now());
ArticleTest articleTest = new ArticleTest();
articleTest.setContent("test");;
articleTest.setUser(user);
session.save(articleTest);//注意这里我们没有保存我们的user对象
System.out.println(articleTest);
}
控制台输出insert
Hibernate:
insert
into
g_user
(date, dateTime, name, time, id)
values
(?, ?, ?, ?, ?)
Hibernate:
insert
into
g_article
(content, user_id, id)
values
(?, ?, ?)
但是只有user保存在数据库中。