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
Java JPA多个带前缀的嵌入字段?_Java_Jpa_Annotations - Fatal编程技术网

Java JPA多个带前缀的嵌入字段?

Java JPA多个带前缀的嵌入字段?,java,jpa,annotations,Java,Jpa,Annotations,对于JPA注释,我希望重用相同的嵌入对象,如下所示: @实体 公共类用户{ @嵌入 公共广播和家庭广播; @嵌入 公共广播; } @可嵌入 公共课堂演讲{ 公共字符串代码; 公共字符串城市; ... } 我可以用@AttributeOverrides、@AttributeOverride和@column指定SQL列名,但它是verbos。是否可以只为homeAddress和workAddress的每一列指定一个前缀 谢谢 Xavier如果您想使用多个相同的嵌入式类。您必须对所有列执行@Att

对于JPA注释,我希望重用相同的嵌入对象,如下所示:

@实体
公共类用户{
@嵌入
公共广播和家庭广播;
@嵌入
公共广播;
}
@可嵌入
公共课堂演讲{
公共字符串代码;
公共字符串城市;
...
} 
我可以用@AttributeOverrides、@AttributeOverride和@column指定SQL列名,但它是verbos。是否可以只为homeAddress和workAddress的每一列指定一个前缀

谢谢


Xavier

如果您想使用多个相同的
嵌入式
类。您必须对所有列执行
@AttributeOverrides
。 尝试如下

参考文献

我的建议是,如果您的
实体中嵌入了一个或多个
。尝试使用
@CollectionTable

@CollectionTable(name = "EMPLOYEE_ADDRESS", joinColumns = @JoinColumn(name = "ADDRESS_ID"))
private List<Address> addressList;
@CollectionTable(name=“EMPLOYEE\u ADDRESS”,joinColumns=@JoinColumn(name=“ADDRESS\u ID”))
私有列表

添加这个对我来说很有用(不过我使用hibernate作为JPA提供者)



谢谢,我知道这个解决方案,但它很冗长。是否有任何解决方案可以不那么冗长,比如使用“prefix”或“suffix”(在您的示例中是“_1”或“_2”)?对于任何尝试上述操作并出现编译错误的Groovy用户,解决方案是在@AttributeOverrides注释中用[]替换{}。可能重复的
@CollectionTable(name = "EMPLOYEE_ADDRESS", joinColumns = @JoinColumn(name = "ADDRESS_ID"))
private List<Address> addressList;
<property name="hibernate.implicit_naming_strategy" value="org.hibernate.boot.model.naming.ImplicitNamingStrategyComponentPathImpl" />