两个实体:
Customer <--- Account
id id
name customerId (FK to Customer)
balance
eclipselink&#39;从表格生成实体&#39;生成两个实体类。 Customer
引用Account
,反之亦然。
public class Customer {
Integer id;
String name;
Account account;
}
public class Account {
Integer id;
Customer customer;
Double balance;
}
必需:生成具有关系属性的实体作为基本类型而不是实体名称:
public class Customer {
Integer id;
String name;
Integer accountId; // <-- this is id instead of Account
}
public class Account {
Integer id;
Integer customerId; // <-- this is id instead of Customer
Double balance;
}
为什么我们需要这个:
Customer
和Account
由不同的应用程序管理,因此打包在单独的战争中。每个战争都可能部署在单独的应用服务器上。如果客户应用程序需要帐户详细信息,它将使用帐户应用程序提供的公共API,而不是直接从DB读取。这是为了避免客户应用程序在不知道帐户应用程序的情况下自行修改帐户实体。
Eclipselink生成可以选择完全关闭关系生成。有没有办法只生成id而不是实体类名?或者有更好的方法来管理它吗?
答案 0 :(得分:0)
我认为我的管理方式不同。对于这个答案,我假设您正在使用Eclipse功能来生成实体类?一般来说,我只做一次,如果有什么变化,请用手触摸。这对我来说似乎更容易。它也避免了Eclipselink对自己的好处过于聪明 - 听起来就像你正在遭受的那样。
设计明智我想你想要一个外键的紧密耦合而没有数据链接的隐含效果。如果您没有定义表关联,Eclipselink将只为您的列生成本机类型。这当然会丢失基于数据库的外键耦合。如果您的数据库已启用Cascading,那么这可能会特别成问题。
老实说,这更像是一个拥有数据&#34;问题比严格的编程问题。也许您可以通过服务层类更好地解决您的问题?或者也许他们会发布你可以包含的@NamedQueries?最后,数据库本身总是存储过程 - 这些通常是非常令人沮丧的源头,但安全人员喜欢它们。