我在一个项目中有一个奇怪的需求。加入两个n: m属性表(我将用虚拟属性呈现行为)。
当然,我有表地方,地址,学校,企业与他们各自的ID,获取,集合和属性在实体类中实现。
代码:
位置
@Entity
@Table(name = "Place")
public class Place implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "idLine")
private Long idLine;
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "pk.place")
private List<FirstTable> firstTables;
}
地址
@Entity
@Table(name = "Address")
public class Address implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "idAddress")
private Long idAddress;
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "pk.address")
private List<FirstTable> firstTables;
}
学校
@Entity
@Table(name = "School")
public class School implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "idSchool")
private Long idSchool;
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "pk.school")
private List<FirstTable> firstTables;
}
第一桌
@Entity
@Table(name = "FirstTable")
@AssociationOverrides({ @AssociationOverride(name = "pk.school", joinColumns = @JoinColumn(name = "idSchool")),
@AssociationOverride(name = "pk.address", joinColumns = @JoinColumn(name = "idAddress")),
@AssociationOverride(name = "pk.place", joinColumns = @JoinColumn(name = "idPlace")) })
public class FirstTable implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@EmbeddedId
protected FirstTablePK pk = new FirstTablePK();
}
FirstTablePK
@Embeddable
public class FirstTablePK implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@ManyToOne
private Address address;
@ManyToOne
private Place place;
@ManyToOne
private School school;
}
上面提到的表和联接工作得很好。现在我想把第一个表和第二个表连接起来。
企业号
@Entity
@Table(name = "Enterprise")
public class Enterprise implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "idEnterprise")
private Long idEnterprise;
现在,对于第二个表,我遵循了相同的逻辑来连接到企业。对于与第一个表的连接,我尝试了以下方法:
@Entity
@Table(name = "SecondTable")
@AssociationOverrides({
@AssociationOverride(name = "pk.firstTable", joinTable = @JoinTable(
name = "FirstTable", inverseJoinColumns = {
@JoinColumn(name = "idSchool", referencedColumnName = "idSchool"),
@JoinColumn(name = "idAddress", referencedColumnName = "idAddress"),
@JoinColumn(name = "idPlace", referencedColumnName = "idPlace") })),
@AssociationOverride(name = "pk.enterprise", joinColumns = @JoinColumn(name = "idEnterprise")) })
public class SecondTable implements Serializable{}
我的注释中有些东西不起作用,我试图做一个inverseJoin到FirstTable表。编译显示此错误:
"org.hibernate.AnnotationException: A component cannot hold properties split into 2 different tables"
我试图提供一个MV示例。提前谢谢,我真的需要你的帮助。
几个小时后,经过多次尝试,我才设法解决了这个问题。事实上,解决方案比我最初想的要简单得多。
这是:
@AssociationOverride(name = "pk.firstTable", joinColumns = {
@JoinColumn(name = "idSchool"),
@JoinColumn(name = "idAddress"),
@JoinColumn(name = "idPlace") }),
@AssociationOverride(name = "pk.enterprise", joinColumns = @JoinColumn(name = "idEnterprise")) })
问题内容: swift没有嵌套类吗? 例如,我似乎无法从嵌套类访问主类的属性测试。 问题答案: Swift的嵌套类与Java的嵌套类不同。好吧,它们就像是Java的一种嵌套类,而不是您正在考虑的那种。 在Java中,内部类的实例会自动引用外部类的实例(除非声明了内部类)。如果您有外部类的实例,则只能创建内部类的实例。这就是在Java中您说类似的原因。 在Swift中,内部类的实例独立于外部类的任何
我有这门课: ContractDetail类如下所示:
我试图提供一种方法,在一个模型中生成一个新对象(列表),在另一个模型中使用has_many关系(通过分组)生成一个新的关联对象(项目)。我能够让表单工作正常,但无法弄清楚为了正确完成创建过程,我缺少什么。 Rails v.5.1.2,Ruby v.2.4.1 lists_controller.rb items_controller.rb list.rb模型 item.rb模型 grouping.r
我有以下build.xml代码。在这里,我在jar文件中修改了清单文件。在清单中,我想添加一些属性,例如资产名称和资产基线。 buildInfo的内容。属性如下: build.xml:我想动态传递名称,即 articlelib 值,并从 buildInfo.properties 中检索值。我在清单外部使用了宏元数据,它是工作文件,但当我在清单标签中使用相同的时,我无法使用它。我是否可以解决此问题或
我正在尝试反序列化一个 JSON 响应,其中包含一些标准字段和一个包含子类属性的 嵌套对象,例如: 字段< code>id和< code>type是标准的,所以我有一个基类< code>Base,然后扩展一些更具体的类: 如何让杰克逊读取 对象作为进一步字段值的来源?我假设我需要创建一个自定义反序列化程序,但我不确定如何具体完成此操作。
描述 (Description) 您可以通过使用“。”连接访问路径的属性名来访问bean的嵌套属性的值。 分隔符。 您可以使用以下方法获取和设置Nested属性的值: PropertyUtils.getNestedProperty(Object, String) PropertyUtils.setNestedProperty(Object, String, Object) 参数: Object :