Java 是否在同一会话中将多个具有相同标识符的对象保存到数据库中?

Java 是否在同一会话中将多个具有相同标识符的对象保存到数据库中?,java,hibernate,orm,nhibernate-mapping,Java,Hibernate,Orm,Nhibernate Mapping,可能重复: 我有两个实体通过多对一的关系联系在一起 多个[类别]------一个[游戏] 纵队 idgame-----------------gameid 类别-----------------游戏名称 我需要在不动产的分类部分有许多游戏的主键。我曾尝试在会话中执行此操作,但出现错误。“具有相同标识符值的不同对象已与会话[org.POJO.Category#1]关联。” 我认为我的配置文件是错误的,但我可能错了。这是我的密码 try{ SessionFactory sessio

可能重复:

我有两个实体通过多对一的关系联系在一起

多个[类别]------一个[游戏]

纵队

idgame-----------------gameid
类别-----------------游戏名称

我需要在不动产的分类部分有许多游戏的主键。我曾尝试在会话中执行此操作,但出现错误。“具有相同标识符值的不同对象已与会话[org.POJO.Category#1]关联。”

我认为我的配置文件是错误的,但我可能错了。这是我的密码

try{
        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); 
        session = sessionFactory.openSession();
            //Create new instance of Contact and set 
        Transaction tx = session.beginTransaction();
        Game gam = new Game();

        gam.setgenre(game.getString("genre"));
        gam.setgname(game.getString("game_name"));
        gam.setplatform(game.getString("platform"));
        gam.setdescription(game.getString("description"));

        session.saveOrUpdate(gam);

        session.update(gam);
        JSONObject cate = game.getJSONObject("Category");

        int gid = gam.getgameid();

        Category cat1 = new Category();

        cat1.setgameid(gid);
        cat1.setcategory(cate.getString("Category1"));

        session.save(cat1);


        Category cat2 = new Category();

        cat2.setgameid(gid);
        cat2.setcategory(cate.getString("Category2"));

        session.save(cat2);
类别的我的配置文件。它是xml

-hibernate-mapping-
-class name=“org.POJO.Category”table=“Category”-

-id name=“gameid”column=“Game\u idGame”-

-/身份证-

-财产 name=“类别” column=“类别”/-

-/阶级- -/休眠映射-

sdfdsfsdfsdf

标识符(id)在逻辑上(技术上)等于主键。不能有两个具有相同主键的对象,因此不能有两个具有相同idenetifier的对象

关系表的主键唯一地标识表中的每个记录

如果您需要两个具有相同主键的对象,则说明您的设计有问题。

标识符(id)在逻辑上(技术上)等于主键。不能有两个具有相同主键的对象,因此不能有两个具有相同idenetifier的对象

关系表的主键唯一地标识表中的每个记录


如果您需要两个具有相同主键的对象,则说明您的设计有问题。

类别无法将gameid用作主键。它需要有自己的主键。游戏id将是引用游戏表中游戏id的外键。

类别不能将游戏id用作主键。它需要有自己的主键。游戏id将是一个外键,引用游戏表中的游戏id。

您已经选择了许多游戏id-s。主键用于唯一标识表中的每个实体(行),而不是关联的实体(行)。因此,您应该在类别中有一个类别ID作为PK,并在idgame上有一个简单的索引。

您选择了许多gameid-s。主键用于唯一标识表中的每个实体(行),而不是关联的实体(行)。因此,你应该在分类中有一个类别ID作为PK,并在idgame上有一个简单的索引。

谢谢大家,这真的很有帮助。谢谢大家,这真的很有帮助。