Problem with injection
sart Feb 9, 2008 11:52 AMHello !
I'm pretty new to Seam but i really like it :)
I found that i can't inject entity bean into session bean.
Can anyone help me ?
This is my code..
`@Entity
@Name("user")
@Table(name = "user", catalog = "seam")
public class User implements java.io.Serializable {
private Integer userId;
private Setting setting;
private String userName;
public User() {
}
public User(Setting setting, String userName) {
this.setting = setting;
this.userName = userName;
}
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "user_id", unique = true, nullable = false)
public Integer getUserId() {
return this.userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "setting_id", nullable = false)
@NotNull
public Setting getSetting() {
return this.setting;
}
public void setSetting(Setting setting) {
this.setting = setting;
}
@Column(name = "user_name", nullable = false, length = 45)
@NotNull
@Length(max = 45)
public String getUserName() {
return this.userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
`
`
@Entity
@Name("setting")
@Table(name = "setting", catalog = "seam")
public class Setting implements java.io.Serializable {
private Integer settingId;
private String settingName;
private Set<User> users = new HashSet<User>(0);
public Setting() {
}
public Setting(String settingName) {
this.settingName = settingName;
}
public Setting(String settingName, Set<User> users) {
this.settingName = settingName;
this.users = users;
}
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "setting_id", unique = true, nullable = false)
public Integer getSettingId() {
return this.settingId;
}
public void setSettingId(Integer settingId) {
this.settingId = settingId;
}
@Column(name = "setting_name", nullable = false, length = 45)
@NotNull
@Length(max = 45)
public String getSettingName() {
return this.settingName;
}
public void setSettingName(String settingName) {
this.settingName = settingName;
}
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "setting")
public Set<User> getUsers() {
return this.users;
}
public void setUsers(Set<User> users) {
this.users = users;
}
}
`
this is my session bean
`
@Name("insertData")
public @Stateless class InsertDataBean implements InsertData {
@In(create=true)
private User user;
@In(create=true)
private Setting setting;
@PersistenceContext
EntityManager em;
public void insert(){
user.setSetting(setting);
em.persist(user);
}
}
`
`<h:form>
<h:inputText value="#{user.userName}"/><br />
<h:inputText value="#{setting.settingName}"/>
<h:commandButton value="Persist" action="#{insertData.insert}"/>
</h:form>`
I'm pretty new to Seam but i really like it :)
I found that i can't inject entity bean into session bean.
Can anyone help me ?
This is my code..
`@Entity
@Name("user")
@Table(name = "user", catalog = "seam")
public class User implements java.io.Serializable {
private Integer userId;
private Setting setting;
private String userName;
public User() {
}
public User(Setting setting, String userName) {
this.setting = setting;
this.userName = userName;
}
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "user_id", unique = true, nullable = false)
public Integer getUserId() {
return this.userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "setting_id", nullable = false)
@NotNull
public Setting getSetting() {
return this.setting;
}
public void setSetting(Setting setting) {
this.setting = setting;
}
@Column(name = "user_name", nullable = false, length = 45)
@NotNull
@Length(max = 45)
public String getUserName() {
return this.userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
`
`
@Entity
@Name("setting")
@Table(name = "setting", catalog = "seam")
public class Setting implements java.io.Serializable {
private Integer settingId;
private String settingName;
private Set<User> users = new HashSet<User>(0);
public Setting() {
}
public Setting(String settingName) {
this.settingName = settingName;
}
public Setting(String settingName, Set<User> users) {
this.settingName = settingName;
this.users = users;
}
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "setting_id", unique = true, nullable = false)
public Integer getSettingId() {
return this.settingId;
}
public void setSettingId(Integer settingId) {
this.settingId = settingId;
}
@Column(name = "setting_name", nullable = false, length = 45)
@NotNull
@Length(max = 45)
public String getSettingName() {
return this.settingName;
}
public void setSettingName(String settingName) {
this.settingName = settingName;
}
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "setting")
public Set<User> getUsers() {
return this.users;
}
public void setUsers(Set<User> users) {
this.users = users;
}
}
`
this is my session bean
`
@Name("insertData")
public @Stateless class InsertDataBean implements InsertData {
@In(create=true)
private User user;
@In(create=true)
private Setting setting;
@PersistenceContext
EntityManager em;
public void insert(){
user.setSetting(setting);
em.persist(user);
}
}
`
`<h:form>
<h:inputText value="#{user.userName}"/><br />
<h:inputText value="#{setting.settingName}"/>
<h:commandButton value="Persist" action="#{insertData.insert}"/>
</h:form>`