dig*_*oel 6 java jpa eclipselink jpa-2.0
我有一个实体.我想可以选择从辅助表中加载有关实体的其他信息.我有以下映射.
@Entity
@Table( name = "program", schema = "myschema" )
@SecondaryTable( name = "program_info", schema = "myschema", pkJoinColumns =
@PrimaryKeyJoinColumn( name = "program_id", referencedColumnName = "program_id" ) )
public class Program { ... }
Run Code Online (Sandbox Code Playgroud)
我已经适当地映射了所有列,并且可以使用单元测试.当程序表中的一行没有在program_info表中有相应的行时,就会出现问题.在这种情况下,它根本不会加载程序.我需要能够将整个辅助表标记为可选.我宁愿不必创建另一个实体/ dao/service并进行1-1映射.
我正在使用eclipselink,但如果可以的话,我希望远离提供商的具体细节.
我需要能够将整个辅助表标记为可选.
EclipseLink将执行INNER JOINa SecondaryTable,如果辅助表中没有相应的行,则什么也得不到.换句话说,EL期望在辅助表中找到一行(在创建,读取,更新,删除时).
如果您想要的是一个OUTER JOIN,您应该使用可选的OneToOne关联(在您的情况下可能使用共享主键).
另一种方法是使用数据库视图(执行OUTER JOIN)并映射视图.
我宁愿不必创建另一个实体/ dao/service并进行1-1映射.
我不明白为什么有一个可选的OneToOne强制你有一个相应的DAO和服务.通过主"支架"部分管理可选部件.
| 归档时间: |
|
| 查看次数: |
6540 次 |
| 最近记录: |