我有类Money是@Embeddable
@Embeddable
public class Money implements Serializable, Comparable<Money> {
@Column(name = "amount", precision = 15, scale = 2)
private BigDecimal amount;
}
Run Code Online (Sandbox Code Playgroud)
当我在实体内部使用多次时,一切正常.例如
@Entity
public class SomeEntity implements Serializable {
@Embedded
@AttributeOverride(name = "amount", column = @Column(name = "entry"))
private Money entryValue;
@Embedded
@AttributeOverride(name = "amount", column = @Column(name = "leave"))
private Money leaveValue;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码完美无缺.
现在问题出现了,当我有另一个@Embeddable,我希望在其中有Money实例,并且实体多次使用@Embeddable.例:
嵌入式
@Embeddable
public class ReportCostValues implements Serializable {
@Embedded
@AttributeOverride(name = "amount", column = @Column(name = "covered_by_grant"))
private Money coveredByGrant;
@Embedded
@AttributeOverride(name = …Run Code Online (Sandbox Code Playgroud)我需要在单独的线程中在Swing应用程序中运行一些方法.使用SwingWorker和SwingUtilities.invokeLater有什么区别.我应该使用哪一个在Swing应用程序中运行一个线程?我在教程中找不到确切的信息
http://java.sun.com/docs/books/tutorial/uiswing/concurrency/index.html
我们目前正在做一个Web应用程序,其中一个功能是由用户创建事件.用户或管理员稍后可以删除这些事件.但是,客户端要求事件不是从数据库中实际删除,而是标记为已删除.用户应该只能看到未删除的事件,但管理员也应该能够浏览已删除的事件.这就是真正的功能.
现在我建议我们只需添加一个名为"status"的额外列,它将具有几个有效值:ACTIVE和DELETED.通过这种方式,我们可以区分正常(活动)和已删除事件,并创建非常简单的查询(SELECT*FROM EVENTS WHERE STATUS ='ACTIVE').然而,我的同事不同意.他指出,无论现在活动事件和已删除事件是否共享相同信息(因此它们可以存储在同一个表中),以后的需求,我的更改和客户端将需要存储有关已删除事件的一些其他信息(比如删除日期,谁删除了它,为什么要删除它 - 有点评论).他说,为了在将来满足这些要求,我们必须在EVENTS表中添加其他列,这些列将保存特定于已删除事件的数据,而不是活动事件.他提出了一个解决方案,其中创建了与EVENTS表具有相同模式的附加表(如DELETED_EVENTS).每个已删除的事件都将从EVENTS表中进行物理删除,并移至DELETED_EVENTS表.
我强烈反对他的想法.它不仅会使SQL查询更复杂,效率更低,而且完全违背了YAGNI.我也不同意他的观点,如果未来需求发生变化,我的想法将使我们在EVENTS表中创建额外的(不可为空)列.在我的场景中,我只需创建新表,如DELETED_EVENTS_DATA(将保存那些额外的存档数据),并在EVENTS表中添加引用键,以维护EVETNS和DELETED_EVENTS_DATA表之间的一对一关系.
然而,由于两个通常在软件和数据库设计上有相似观点的开发人员对于如何在数据库级别设计这些需求有如此截然不同的看法,我感到很困惑.我认为我们可能都朝着错误的方向前进,还有另一个(第三个)解决方案?或者只有一种替代方案?你如何设计这种要求?有关如何正确完成的任何模式或指导方针吗?任何帮助将深表感谢
我有网络应用程序,我真的不关心IE6用户.但是,我希望有某种功能可以告知用户他们使用IE6并且不支持他们的浏览器.我在考虑两种可能的解决方案:
两种解决方案都足够了,但我更喜欢第二种解决方案.可能需要涉及一些神奇的JavaScript,任何人都可以请为此提供解决方案吗?
快速提问:
我有webapplication(wicket + spring + jpa)并且正在考虑相当不寻常的架构设计.请检查出来并发表您的意见.
考虑类包装器:
@Service
public class Wrapper {
protected static EntityManager entityManager;
@PersistenceContext
private void injectEntityManager(EntityManager entityManager) {
Wrapper.entityManager = entityManager;
}
Run Code Online (Sandbox Code Playgroud)
如你所见,我现在已经静态注入了EntityManager.
现在考虑简单的实体DogEntity
@Entity
public class DogEntity {
String name;
}
Run Code Online (Sandbox Code Playgroud)
对于那个实体,我们创建了包装狗
public class Dog extends Wrapper {
private DogEntity entity;
private Dog(DogEntity entity) {
this.entity = entity;
}
public static Dog create(String name) {
entity = new DogEntity();
entity.name = name;
entityManager.persist(entity); // for a moment forget that this code is not in transaction …Run Code Online (Sandbox Code Playgroud)