Java SpringDataJPA-如何使用复合键插入子实体?

Java SpringDataJPA-如何使用复合键插入子实体?,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,我有以下两个域模型 user ---- userid (PK) type like ------ likeid (PK) userid (PK) word like.userid引用User中的userid,是复合主键的一部分 并插入测试代码 @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(类=SpringJPatesApplication.class) @WebAppConfiguration

我有以下两个域模型

user
----
userid (PK)
type

like
------
likeid (PK)
userid (PK)
word
like.userid引用User中的userid,是复合主键的一部分

并插入测试代码

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(类=SpringJPatesApplication.class)
@WebAppConfiguration
@IntegrationTest(“服务器端口:0”)
公开课考试{
@自动连线
私有用户存储库用户存储库;
@org.junit.Test
public void应用程序()引发异常{
用户=新用户();
user.setType(user\u TYPE.user);
Like=新的Like();
LikeKey LikeKey=新的LikeKey();
likeKey.setliko(1L);
like.setLikeKey(likeKey);
比如。设置词(“word”);
like.setUser(user);
user.getLikes().add(like);
userRepository.save(用户);
}
}
我在运行JUnit测试时出错

Hibernate: insert into user (uno, user_type) values (null, ?)
Hibernate: insert into like (word, like_no, uno) values (?, ?, ?)
2016-07-22 13:44:36.499 WARN SqlExceptionHelper : SQL Error: 42001, SQLState: 42001
2016-07-22 13:44:36.499 ERROR SqlExceptionHelper : Syntax error in SQL statement "INSERT INTO LIKE[*] (WORD, LIKE_NO, UNO) VALUES (?, ?, ?) "; expected "identifier"; SQL statement: [42001-190]
首先,可能吗

第二,如果可能的话,我的代码中有什么错误

User.java

@Entity
@Table(name = "user")
@Data
public class User {

    @Id
    @GeneratedValue
    @Column(name = "uno")
    private Long userNo;

    @Column(name = "user_type")
    @Enumerated(EnumType.STRING)
    private USER_TYPE type;

    @OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
    private List<Like> likes = new ArrayList<>();

    public enum USER_TYPE {USER, ADMIN}

    @Override
    public String toString() {
        return "User [userNo=" + userNo + ", type=" + type + ", likes=" + likes + "]";
    }

}
@Entity
@Table(name = "like")
@Data
public class Like {

    @EmbeddedId
    private LikeKey likeKey;

    @Column(name = "word")
    private String word;

    @MapsId(value = "userNo")
    @ManyToOne(optional = false, targetEntity = User.class)
    @JoinColumn(name = "uno")
    private User user;

    @Embeddable
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public static class LikeKey implements Serializable {

        private static final long serialVersionUID = 2116470670954200809L;

        @Column(name = "likeNo")
        private Long likeNo;

        @Column(name = "uno")
        private Long userNo;

    }
}

我认为问题出在LIKE实体中,因为LIKE是一个Sql关键字

使用此代码:

@Entity
@Table(name = "like_table")
@Data
public class Like {
... 
}

我认为问题在于LIKE实体,因为LIKE是一个Sql关键字

使用此代码:

@Entity
@Table(name = "like_table")
@Data
public class Like {
... 
}