相关疑难解决方法(0)

@embeddable vs @entity用于映射集合

这一定是天真的,但我怀疑何时使用@Entity@Embeddable.

说我有一个User和一个Notification班级.

 @Entity
 public class User{
     //other properties
     @onetomany
     private List<Notification> notifications;
 }

 @Entity
 public class Notification{
     //properties
 }
Run Code Online (Sandbox Code Playgroud)

据我所知,将有类表UserNotification,以及映射第三个表.如果我这样做怎么办?

 @Entity
 public class User {
     //other properties
     @ElementCollection
     private List<Notification> notifications;
 }

 @Embeddable
 public class Notification{
     //properties
 }
Run Code Online (Sandbox Code Playgroud)

我知道这不会创建一个表Notification.但我仍然可以存储我的通知对象.我浏览了文档,但有些疑惑:

  1. 是否基于我是否希望将B类视为单独的表格?
  2. 是否存在创建表和可嵌入对象的性能差异?
  3. 除了直接查询表之外,我可以用除了可嵌入对象之外的其他对象做什么?

笔记

对于读这个问题的人来说,这个问题也可能对你有帮助.

java orm spring hibernate jpa

17
推荐指数
1
解决办法
2万
查看次数

一个行为类似于@Entity和@Embeddable的类

我在Team和Player类之间有单向@OneToMany关系.我想在你的玩家中保存一个Team对象.玩家的标识符由Team外键和列表索引构成,如下所示.我有一个像这样的映射,因为我需要保存团队和你的玩家同时吃.

@Entity
public class Team {

    @Id
    @GeneratedValue
    private Integer id;

    @CollectionOfElements
    @JoinTable(
        name="PLAYER",
        joinColumns=@JoinColumn(name="TEAM_ID"))
    @IndexColumn(name="PLAYER_INDEX")
    private List<Player> playerList = new ArrayList<Player>();

}

@Embeddable
public class Player {

   // Player's getter's and setter's

}
Run Code Online (Sandbox Code Playgroud)

所以如果我使用以下内容

Team team = new Team();

team.getPlayerList().add(new Player());
team.getPlayerList().add(new Player());

session.save(team); // It works!
Run Code Online (Sandbox Code Playgroud)

无论你使用@CollectionsOfElements,Player类需要@Embeddable注释,而不是@Entity,都会发生这种情况.JPA不允许@Entity和@Embeddable同时使用.玩家也是@Entity--它与其他实体有关系.

有人知道我可以通过在Player类中使用CascadeType.PERSIST与@Entity而不是@Embeddable来保存团队和玩家(单向关系)吗?

请记住,在保存之前需要分配COMPOUND主键,但Team的标识符和PlayerList索引位置可以扮演Player的复合主键的角色

问候,

java hibernate jpa

5
推荐指数
1
解决办法
9142
查看次数

UML类关系

在确定常见的UML类关系时,我想确认自己是否走在正确的轨道上.例如,之间的关系是:

1 stackoverflow成员和他/她的stackoverflow用户帐户分类为组合关系或聚合关系?起初我认为这是一个协会,因为这个成员"有一个"帐户.然而,在第二个想法,我正在考虑它的组成,因为每个"部分"(用户帐户)一次只属于一个整体(用户),这意味着只要我登录到stackoverflow,我必须使用这一个而且只有帐户,直到我注销.如果我使用不同的帐户重新登录到stackoverflow,那么它的组成将再次出现.你同意吗?

2一个数据库和一个人的用户帐号有聚合关系吗?我想是这样的,因为1个数据库(整个)可以存储0 ...*用户帐户(部分)的数量,但另一个数据库可以存储相同的用户帐户.

最后,任何人都可以推荐一个专门使用UML设计代码的网站吗?提前致谢

uml design-patterns class-design

3
推荐指数
1
解决办法
3176
查看次数

标签 统计

hibernate ×2

java ×2

jpa ×2

class-design ×1

design-patterns ×1

orm ×1

spring ×1

uml ×1