Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将java.sql.Type映射到多个varchar/variable字段_Java_Jpa - Fatal编程技术网

将java.sql.Type映射到多个varchar/variable字段

将java.sql.Type映射到多个varchar/variable字段,java,jpa,Java,Jpa,我在java/hibernate应用程序中有一个嵌入式类,我想将它作为一个类型映射到3个数据库字段(以便将其用作CustomVersionType)。目前我得到的错误是 org.hibernate.MappingException:属性映射的 列:com.imsproto.model.RuleOfEngagementCI.contextIdentifier类型: com.imsproto.usertypes.contextureAliseIdentifierVersionType 老实说,我不确

我在java/hibernate应用程序中有一个嵌入式类,我想将它作为一个类型映射到3个数据库字段(以便将其用作CustomVersionType)。目前我得到的错误是

org.hibernate.MappingException:属性映射的 列:com.imsproto.model.RuleOfEngagementCI.contextIdentifier类型: com.imsproto.usertypes.contextureAliseIdentifierVersionType

老实说,我不确定映射是否能解决这个问题,但我想试试。据我所知,扩展方言并添加自定义映射的场景是针对数据库中实际存在未映射类型的场景(我看到的示例可能已经过时,但包括UUID和json字段)。在本例中,我要做的是将一些复合类型映射到3个字段。这是桌子的结构

 //Standard hibernate code
@Embeddable
public class TestType implements Serializable
{

@Transient
public Class getUnderlyingClass() { return TestType.class;}

@Column(name="`id1`", nullable=false, length = 100)
private java.lang.String id1 = UUID.randomUUID().toString();

@Column(name="`id2`", nullable=false, length = 100)
private java.lang.String id2;

@Column(name="`id3`", nullable=false, length = 100)

public java.lang.String getId1()    {
    return id1;
}

public void setId1(java.lang.String value)    {
    this.id1= value;
}

public int compareTo(TestType b) {
    if (Id1.equals(b.Id1)) {
        return 0;
    } else {
        return -1;
    }
}

}

@Entity
@Table (name="`hib_test`")
public class HibernateTest implements Serializable {

private static final long serialVersionUID = 1L; 

@Id
@SequenceGenerator(name="seq-gen", sequenceName="seq", allocationSize=1)
@GeneratedValue (strategy=GenerationType.SEQUENCE, generator="seq-gen")
@Column(name="`id`", nullable=false)
private Long id;

@Column(name="`NAME`", length=100)
private String name;

@Type(type = "com.proto.usertypes.TestType")
@Version
@Embedded
    @AttributeOverrides({
    @AttributeOverride(name="id1", column=@Column(name="`id1_in_testtype`"))
    ,@AttributeOverride(name="id2", column=@Column(name="`id2_in_testtype`"))
    ,@AttributeOverride(name="id3", column=@Column(name="`id3_in_testtype`"))
    })
private TestType testType;

public TestType getTestType()    {
        return testType;
    }
    ...
}
我想做的是将TestType映射为一个类型,以便它将其视为一个复合数据类型。添加时,可以通过Java.sql.Types枚举访问此类型。这是可能的还是我在抓救命稻草