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”) 首先; }
当我在main中运行以下命令时: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
@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();