java – 用于集合的自定义Hibernate插入,与@WhereJoinTable相对应
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 用于集合的自定义Hibernate插入,与@WhereJoinTable相对应,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1769字,纯文字阅读大概需要3分钟。
内容图文
我试图在连接表上映射与额外属性(标志)的关系,但没有在实体中明确定义此连接表.
问题:
业务分配到0或1个主要国家/地区,业务也链接到0个或更多个次要国家/地区.
我有三张桌子:Business,Country,Business_Country
在我的商业中,我有一个@WhereJoinTable,它非常适合检索:
@OneToOne
@JoinTable(
name="business_country",
joinColumns = @JoinColumn( name="business_id"),
inverseJoinColumns = @JoinColumn( name="country_id")
)
@WhereJoinTable(clause="is_main = 1")
private Country mainCountry;
@OneToMany
@JoinTable(
name="business_country",
joinColumns = @JoinColumn( name="business_id"),
inverseJoinColumns = @JoinColumn( name="country_id")
)
@WhereJoinTable(clause="is_main = 0")
private Set<Country> secondaryCountries = new HashSet<>();
我想知道@WhereJoinTable执行保存的对应方是什么.
只需创建实体业务并将国家/地区添加到其中就会违反约束:
cannot insert NULL into ("TESTSCHEMA"."BUSINESS_COUNTRY"."IS_MAIN")
我想要做的是mainCountry的is_main设置为1,secondaryCountries的所有条目设置为0.
我想知道是否有可能使用自定义的@SQLInsert?
解决方法:
您可以使用@SQLInsert为关联表指定自定义sql insert语句:
@OneToOne
@JoinTable(
name="business_country",
joinColumns = @JoinColumn( name="business_id"),
inverseJoinColumns = @JoinColumn( name="country_id")
)
@WhereJoinTable(clause="is_main = 1")
@SQLInsert(sql = "insert into business_country (business_id, country_id, is_main) values (?, ?, 1)")
private Country mainCountry;
@OneToMany
@JoinTable(
name="business_country",
joinColumns = @JoinColumn( name="business_id"),
inverseJoinColumns = @JoinColumn( name="country_id")
)
@WhereJoinTable(clause="is_main = 0")
@SQLInsert(sql = "insert into business_country (business_id, country_id, is_main) values (?, ?, 0)")
private Set<Country> secondaryCountries = new HashSet<>();
This和this文章也可以提供帮助(注意插入语句中列的排序).
内容总结
以上是互联网集市为您收集整理的java – 用于集合的自定义Hibernate插入,与@WhereJoinTable相对应全部内容,希望文章能够帮你解决java – 用于集合的自定义Hibernate插入,与@WhereJoinTable相对应所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。