jpa一对多的映射(单向),怎么更新

jpa一对多的映射(单向),怎么更新,第1张

有两种方式实现一对多的单向关联。一种是在只使用@OneToMany来标识,这种方式是通过一张第三方表来保存关系。还有一种是使用@OneToMany和@JoinColumn来标注,这种方式是在多的一方(Book)的表中增加一个外键列来保存关系。

第一种方式,通过一张第三方表来实现一对多的单向关联:

Authorjava如下,需要注意private Set<Book> books = new HashSet<Book>()的注解。只是使用了@OneToMany。

1 package comcndatacomjpaentity; 2  3 import javautilHashSet; 4 import javautilSet; 5  6 import javaxpersistenceCascadeType; 7 import javaxpersistenceColumn; 8 import javaxpersistenceEntity; 9 import javaxpersistenceFetchType;10 import javaxpersistenceGeneratedValue;11 import javaxpersistenceId;12 import javaxpersistenceOneToMany;13 import javaxpersistenceTable;14 15 16 /17    作者18   @author Luxh19  /20 21 @Entity22 @Table(name="author")23 public class Author {24     25     @Id26     @GeneratedValue27     private Long id;28     29     /作者的名字/30     @Column(length=32)31     private String name;32     33     /作者写的书/34     @OneToMany(cascade=CascadeTypeALL,fetch=FetchTypeLAZY)//级联保存、更新、删除、刷新;延迟加载35     private Set<Book> books = new HashSet<Book>();36     37     38     39     public Long getId() {40         return id;41     }42 43 44     public void setId(Long id) {45         thisid = id;46     }47 48 49     public String getName() {50         return name;51     }52 53 54     public void setName(String name) {55         thisname = name;56     }57 58 59     public Set<Book> getBooks() {60         return books;61     }62 63 64     public void setBooks(Set<Book> books) {65         thisbooks = books;66     }67 68 69     70     71 }

Bookjava如下,因为是单向的关联,所以这个实体不需要加任何的关联标识。

1 package comcndatacomjpaentity; 2  3 import javaxpersistenceColumn; 4 import javaxpersistenceEntity; 5 import javaxpersistenceGeneratedValue; 6 import javaxpersistenceId; 7 import javaxpersistenceTable; 8  9 /10   书11   @author Luxh12  /13 14 @Entity15 @Table(name="book")16 public class Book {17     18     @Id19     @GeneratedValue20     private Long id;21     22     /书名/23     @Column(length=32)24     private String name;25     26     public Long getId() {27         return id;28     }29 30     public void setId(Long id) {31         thisid = id;32     }33 34     public String getName() {35         return name;36     }37 38     public void setName(String name) {39         thisname = name;40     }41 42     43 }

只在Author实体中对private Set<Book> books = new HashSet<Book>()加上标注@OneToMany实现单向关联。这样就通过一个关联表来实现这种关联。生成数据库表如下,会以Author的表名和下划线和Book的表名生成一张表author_book来保存Author和Book的一对多单向映射。

在author_book表中,存的是Auhtor的id和Book的id:

第二种方式,通过在多方(Book)的表中增加一个外键列实现一对多的单向关联。

Authorjava如下,需要注意private Set<Book> books = new HashSet<Book>()的注解。同时使用了@OneToMany和@JoinColumn。

1 package comcndatacomjpaentity; 2  3 import javautilHashSet; 4 import javautilSet; 5  6 import javaxpersistenceCascadeType; 7 import javaxpersistenceColumn; 8 import javaxpersistenceEntity; 9 import javaxpersistenceFetchType;10 import javaxpersistenceGeneratedValue;11 import javaxpersistenceId;12 import javaxpersistenceJoinColumn;13 import javaxpersistenceOneToMany;14 import javaxpersistenceTable;15 16 17 /18    作者19   @author Luxh20  /21 22 @Entity23 @Table(name="author")24 public class Author {25     26     @Id27     @GeneratedValue28     private Long id;29     30     /作者的名字/31     @Column(length=32)32     private String name;33     34     /作者写的书/35     @OneToMany(cascade=CascadeTypeALL,fetch=FetchTypeLAZY)//级联保存、更新、删除、刷新;延迟加载36     @JoinColumn(name="author_id")//在book表增加一个外键列来实现一对多的单向关联37     private Set<Book> books = new HashSet<Book>();38     39     40     41     public Long getId() {42         return id;43     }44 45 46     public void setId(Long id) {47         thisid = id;48     }49 50 51     public String getName() {52         return name;53     }54 55 56     public void setName(String name) {57         thisname = name;58     }59 60 61     public Set<Book> getBooks() {62         return books;63     }64 65 66     public void setBooks(Set<Book> books) {67         thisbooks = books;68     }69 70 71     72     73 }

Bookjava不变。

在数据库中只生成了两张表:author和book。

再看book表的结构,会多了一列author_id。

spring data jpa 默认预先生成了一些基本的CURD的方法,例如:增、删、改等等

1 继承JpaRepository

public interface UserRepository extends JpaRepository<User, Long> {

}

2 使用默认方法

@Test

public void testBaseQuery() throws Exception {

User user=new User();

userRepositoryfindAll();

userRepositoryfindOne(1l);

userRepositorysave(user);

userRepositorydelete(user);

userRepositorycount();

userRepositoryexists(1l);

//

}

以上就是关于jpa一对多的映射(单向),怎么更新全部的内容,包括:jpa一对多的映射(单向),怎么更新、spring boot 使用jpa连接数据库 dao层怎么写、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9878328.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存