Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa 如何获得自动生成的值? @TableGenerator(name=“trial”,table=“third”, pkColumnName=“a”,valueColumnName=“b”,pkColumnValue=“first”) @实体 头等舱{ @身份证 @GeneratedValue(策略=GenerationType.TABLE,generator=“试用”) 受保护的INTA; @OneToMany(mappedBy=“first”,cascade=CascadeType.PERSIST) @JoinColumn(name=“a”) 保护列表秒; } @实体 公共二等舱{ @身份证 受保护的INTA; @许多酮 @JoinColumn(name=“b”) 首先; }_Jpa - Fatal编程技术网

Jpa 如何获得自动生成的值? @TableGenerator(name=“trial”,table=“third”, pkColumnName=“a”,valueColumnName=“b”,pkColumnValue=“first”) @实体 头等舱{ @身份证 @GeneratedValue(策略=GenerationType.TABLE,generator=“试用”) 受保护的INTA; @OneToMany(mappedBy=“first”,cascade=CascadeType.PERSIST) @JoinColumn(name=“a”) 保护列表秒; } @实体 公共二等舱{ @身份证 受保护的INTA; @许多酮 @JoinColumn(name=“b”) 首先; }

Jpa 如何获得自动生成的值? @TableGenerator(name=“trial”,table=“third”, pkColumnName=“a”,valueColumnName=“b”,pkColumnValue=“first”) @实体 头等舱{ @身份证 @GeneratedValue(策略=GenerationType.TABLE,generator=“试用”) 受保护的INTA; @OneToMany(mappedBy=“first”,cascade=CascadeType.PERSIST) @JoinColumn(name=“a”) 保护列表秒; } @实体 公共二等舱{ @身份证 受保护的INTA; @许多酮 @JoinColumn(name=“b”) 首先; },jpa,Jpa,当我在main中运行以下命令时: @TableGenerator(name = "trial", table = "third", pkColumnName = "a" , valueColumnName = "b", pkColumnValue = "first") @Entity public class First{ @Id @GeneratedValue(strategy = GenerationType.TABLE, generator = "tr

当我在main中运行以下命令时:

@TableGenerator(name = "trial", table = "third",
        pkColumnName = "a" , valueColumnName = "b", pkColumnValue = "first")

@Entity

public class First{

    @Id
    @GeneratedValue(strategy = GenerationType.TABLE, generator = "trial")
    protected int a;

    @OneToMany(mappedBy ="first", cascade = CascadeType.PERSIST)
    @JoinColumn(name = "a")
    protected List<Second> seconds;
}

@Entity

public class Second{

    @Id
    protected int a;

    @ManyToOne
    @JoinColumn(name = "b")
    First first;
}
Second aSecond=new Second();
第二个a=2;
First affirst=新的First();
List scnds=new ArrayList();
添加(一秒钟);
第一秒=scnds;
aEntityManager.getTransaction().begin();
坚持(第一次);
aEntityManager.getTransaction().commit();
它在表2中的“b”列中设置为null? 如何获取在
第一个
中的
a
中自动创建的值,以在
第二个
中的
b
中设置?

以下几点:

第一:在第一个类中的seconds集合上不需要@JoinColumn(name=“a”)注释。映射正在由第二个类处理

下一步:

有几件事:

第一:在第一个类中的seconds集合上不需要@JoinColumn(name=“a”)注释。映射正在由第二个类处理

下一步:


我可以问第二个问题吗?如果我想在第二个表的主键“a”而不是“b”上连接:@ManyToOne@JoinColumn(name=“a”,insertable=false,updateable=false)First;我可以问第二个问题吗?如果我想在第二个表的主键“a”而不是“b”上连接:@ManyToOne@JoinColumn(name=“a”,insertable=false,updateable=false)First;
Second aSecond = new Second();

aSecond.a = 2;

First aFirst = new First();

List<Second> scnds = new ArrayList<Second>();
scnds.add(aSecond);

aFirst.seconds = scnds;

aEntityManager.getTransaction().begin();

aEntityManager.persist(aFirst);

aEntityManager.getTransaction().commit();
Second aSecond = new Second();
aSecond.a = 2;
First aFirst = new First();

//its a bi-directional mapping so you have to set the references both ways
aFirst.seconds.add(aSecond);
aSecond.first = aFirst;

aEntityManager.getTransaction().begin();
aEntityManager.persist(aFirst);
aEntityManager.getTransaction().commit();