繁体   English   中英

Spring MVC:使用Hibernate在PostgreSQL中保存Java列表

[英]Spring mvc : Saving a Java List in PostgreSQL with Hibernate

我正在一个Spring-MVC项目中,在这里我使用Hibernate进行持久化。 在其中一个模型类中,我有一个要保留的列表。 我正面临这个问题,因为我不知道在PostgreSQL中使用哪种数据类型,我是否需要以某种方式指示休眠以尝试保存列表。 性能要求在此列表中并不是什么大问题,因为它没有采取太多行动。 我正在发布一些代码以供参考,请告诉我。 非常感谢 :

GroupAccount模型类:

@Entity
@Table(name="groupaccount")
public class GroupAccount {

 @Column(name = "blacklist")
    private List<String> blacklist;
  public List<String> getBlacklist() {
        return blacklist;
    }

    public void setBlacklist(List<String> blacklist) {
        this.blacklist = blacklist;
    }
}

有时我需要更新黑名单的值,因此我在DAO中有一个方法来更新groupAccount,我将其粘贴在下面。

GroupAccountDAOImpl编辑功能:

 @Override
    public void editGroupAccount(GroupAccount groupAccount) {
        session = this.sessionFactory.getCurrentSession();
       GroupAccount groupAccount1 = (GroupAccount)session.get(GroupAccount.class,groupAccount.getGroupId());
        if(!(groupAccount1==null)){
            groupAccount.setOwnedcanvas(groupAccount1.getOwnedcanvas());
            groupAccount.setGroupMembersSet(groupAccount1.getGroupMembersSet());
            session.merge(groupAccount);
            session.flush();
        }
    }

在黑名单中添加用户的一种用例:

List<String> blackListUsers;
blackListUsers = groupAccount.getBlacklist();
blackListUsers.add(memberForBlackListing.getMemberUsername());
groupAccount.setBlacklist(blackListUsers);
this.groupAccountService.editGroupAccount(groupAccount);
removeAllMemberships(memberId);
return true;

你能帮忙的话,我会很高兴。 非常感谢。 :-)

您不能将List<String>映射到单个列。 对于这些情况,使用@ElementCollection

@ElementCollection
@CollectionTable(name="blacklist", joinColumns=@JoinColumn(name="group_account_id")
@Column(name = "name")
private List<String> blacklist;

这需要一个名为blacklist的数据库表,该表具有列namegroup_account_id (将用作group_account表的外键)。 当然,表名和列名是可自定义的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM